<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Full Byte Developer</title><description>Commands, configs and prompts from Full Byte Developer posts, with sources and links to the originals.</description><link>https://fullbytedeveloper.com</link><language>en</language><item><title>Add drawing, diagram and film skills to your agent</title><link>https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills</guid><description>Install one skill for the visual you need and inspect its scripts before granting access.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anatomy, Diagram Design and Lemo Opuscar cover different outputs: interactive illustrations, diagrams and films built in code, per their repositories &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Choose the output first.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-anatomy-for-an-interactive-illustration&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-anatomy-for-an-interactive-illustration&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install Anatomy for an interactive illustration&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-anatomy-for-an-interactive-illustration&quot; aria-label=&quot;Copy link to step 1: Install Anatomy for an interactive illustration&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The Anatomy README documents this Claude Code installation &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Read its skill and scripts before running it.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; wheresryan22/anatomy&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -g&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -a&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; claude-code&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Its documented example asks the skill to explain a token bucket rate limiter interactively &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/anatomy explain how a token bucket rate limiter works, interactive&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;install-diagram-design-for-a-diagram&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02install-diagram-design-for-a-diagram&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install Diagram Design for a diagram&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-diagram-design-for-a-diagram&quot; aria-label=&quot;Copy link to step 2: Install Diagram Design for a diagram&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The repository documents this installation &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; cathrynlavery/diagram-design&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Describe the components and their relationships in plain language. Per the README, the skill writes a self-contained HTML and SVG diagram you can open locally &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;install-lemo-opuscar-for-a-film&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03install-lemo-opuscar-for-a-film&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install Lemo Opuscar for a film&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-lemo-opuscar-for-a-film&quot; aria-label=&quot;Copy link to step 3: Install Lemo Opuscar for a film&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Lemo Opuscar documents these terminal commands for Claude Code &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; marketplace&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; lemomo-ai/lemo-opuscar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; lemo-opuscar@lemolab&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Check the repository&apos;s runtime requirements before rendering. Its first use downloads shared guides and tools; each film&apos;s project stays in the folder where you started &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-drawing-diagram-film-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Keep the generated source with the export so you can revise it later.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>DRAW</category><category>dev-tools</category><category>claude-code</category></item><item><title>Write skill metadata an agent can recognize</title><link>https://fullbytedeveloper.com/blog/agent-skill-metadata-progressive-loading</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/agent-skill-metadata-progressive-loading</guid><description>Give your skill a specific name and trigger description, then move detail into linked files.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An agent skill starts with a directory containing &lt;code&gt;SKILL.md&lt;/code&gt;. The Agent Skills specification requires a name and description in YAML frontmatter, followed by the instructions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-skill-metadata-progressive-loading#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;make-the-description-say-when-to-use-it&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01make-the-description-say-when-to-use-it&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Make the description say when to use it&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;make-the-description-say-when-to-use-it&quot; aria-label=&quot;Copy link to step 1: Make the description say when to use it&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The specification&apos;s minimal structure is &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-skill-metadata-progressive-loading#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;md&quot; data-title=&quot;skill-name/SKILL.md&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;skill-name/SKILL.md&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;md&quot; data-title=&quot;skill-name/SKILL.md&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;name: skill-name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;description: A description of what this skill does and when to use it.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Replace the placeholders with your task. The name must match the directory. Describe both the work and the circumstances that should trigger it &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-skill-metadata-progressive-loading#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;keep-the-procedure-in-the-body&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02keep-the-procedure-in-the-body&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep the procedure in the body&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-the-procedure-in-the-body&quot; aria-label=&quot;Copy link to step 2: Keep the procedure in the body&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Put the instructions after the frontmatter. The specification allows supporting scripts, references and assets beside &lt;code&gt;SKILL.md&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-skill-metadata-progressive-loading#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Link the exact supporting file where the agent needs it.&lt;/p&gt;
&lt;p&gt;Anthropic describes progressive disclosure: skill metadata is available first, while the full instructions and additional resources load when needed &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/agent-skill-metadata-progressive-loading#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. A vague description can make a useful procedure hard to discover.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-behavior-in-a-real-task&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-the-behavior-in-a-real-task&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the behavior in a real task&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-behavior-in-a-real-task&quot; aria-label=&quot;Copy link to step 3: Check the behavior in a real task&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Ask the agent to perform a task the description covers, then one outside that scope. Inspect which skill it selects and whether it loads the intended references. Revise the trigger description if it repeatedly selects the wrong procedure.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>STARTER</category><category>ai-agents</category><category>claude-code</category></item><item><title>Automate SEO drafts with an editor review</title><link>https://fullbytedeveloper.com/blog/automate-seo-with-editor-review</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/automate-seo-with-editor-review</guid><description>Use Search Console data to choose pages, save suggested changes as drafts and check them before publishing.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Automate the collection and drafting work, then keep a person responsible for the published page. Google asks publishers to verify AI-generated content, including metadata. Its spam policy targets scaled content made to manipulate rankings without helping users. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/automate-seo-with-editor-review#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/automate-seo-with-editor-review#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;pick-pages-from-search-data&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01pick-pages-from-search-data&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Pick pages from search data&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;pick-pages-from-search-data&quot; aria-label=&quot;Copy link to step 1: Pick pages from search data&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Search Console&apos;s &lt;code&gt;searchAnalytics.query&lt;/code&gt; returns clicks, impressions, click-through rate and position. It supports page and query dimensions and requires authorization and a date range. The API returns top rows rather than guaranteeing every row. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/automate-seo-with-editor-review#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Look for pages with meaningful impressions and few clicks. Read the queries and the page before deciding whether a title change would help. Low click-through rate alone does not explain why a result was skipped.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;prepare-an-editing-brief&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02prepare-an-editing-brief&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Prepare an editing brief&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;prepare-an-editing-brief&quot; aria-label=&quot;Copy link to step 2: Prepare an editing brief&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Supply the page, its audience, the search queries and sources the draft may cite. Ask for suggested changes to the title, description and outline, with a separate list of claims to verify.&lt;/p&gt;
&lt;p&gt;Check the draft against those sources and the actual product. Include metadata in that review, as Google&apos;s guidance recommends. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/automate-seo-with-editor-review#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;save-a-wordpress-draft&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03save-a-wordpress-draft&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Save a WordPress draft&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;save-a-wordpress-draft&quot; aria-label=&quot;Copy link to step 3: Save a WordPress draft&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The WordPress API documents creating and updating posts, including a &lt;code&gt;status&lt;/code&gt; value of &lt;code&gt;draft&lt;/code&gt;. Use the post ID when updating an existing post and confirm that it belongs to the intended page. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/automate-seo-with-editor-review#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Preview the draft before publishing. Review links, headings and the rendered page as well as the text.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-resulting-page&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04check-the-resulting-page&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the resulting page&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-resulting-page&quot; aria-label=&quot;Copy link to step 4: Check the resulting page&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Lighthouse CI documents collecting audits and applying assertions in a build workflow. Follow its setup guide for the site&apos;s build and serving configuration before using its autorun command. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/automate-seo-with-editor-review#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;lhci&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; autorun&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use these checks to catch page regressions. They do not prove a ranking improvement. Keep the original metrics and compare later Search Console data over a comparable period. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/automate-seo-with-editor-review#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/automate-seo-with-editor-review#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>AUTOSEO</category><category>dev-tools</category></item><item><title>Check Better Auth Magic Link and OAuth Proxy fixes</title><link>https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update</guid><description>Check the affected login configurations and coordinate the upgrade across participating servers.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Better Auth&apos;s advisories describe two account-takeover paths. Both identify &lt;code&gt;1.7.7&lt;/code&gt; as the patched version; the release notes confirm the Magic Link and OAuth Proxy fixes &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-the-installed-release-and-login-configuration&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-the-installed-release-and-login-configuration&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the installed release and login configuration&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-installed-release-and-login-configuration&quot; aria-label=&quot;Copy link to step 1: Check the installed release and login configuration&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Read your lockfile and auth setup. The Magic Link advisory covers versions from &lt;code&gt;1.4.0-beta.18&lt;/code&gt; up to, but excluding, &lt;code&gt;1.7.7&lt;/code&gt;. Its affected configuration combines social or Generic OAuth sign-in with database-backed OAuth state and one of these Magic Link storage setups &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;storeToken: &quot;plain&quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;storeToken: &quot;hashed&quot;&lt;/code&gt; with global &lt;code&gt;verification.storeIdentifier: &quot;hashed&quot;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The advisory says &lt;code&gt;disableSignUp: true&lt;/code&gt; does not prevent takeover of existing accounts &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-oauth-proxy-separately&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-oauth-proxy-separately&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check OAuth Proxy separately&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-oauth-proxy-separately&quot; aria-label=&quot;Copy link to step 2: Check OAuth Proxy separately&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The second advisory covers &lt;code&gt;1.5.0-beta.12&lt;/code&gt; through versions before &lt;code&gt;1.7.7&lt;/code&gt;. It requires cookie-backed state, implicit account linking, and a missing dedicated proxy secret or one equal to the environment&apos;s global secret &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Switching between cookie and database state can expose the other issue. Read both advisories before choosing a workaround &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;upgrade-the-participating-services-together&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03upgrade-the-participating-services-together&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Upgrade the participating services together&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;upgrade-the-participating-services-together&quot; aria-label=&quot;Copy link to step 3: Upgrade the participating services together&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; the release notes say existing Magic Links and pending OAuth or SAML sign-ins must restart after the upgrade. Coordinate the change across servers sharing verification storage &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Install a supported patched release and update the associated Better Auth packages together. The &lt;code&gt;1.7.7&lt;/code&gt; release notes state that no database migration is required for this fix &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Review the advisory&apos;s prefix changes if you use custom verification identifier overrides &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;After deployment, request fresh Magic Links and exercise each configured login path. For OAuth Proxy, include every participating production and preview environment in that check &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/better-auth-magic-link-security-update#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>AUTHFIX</category><category>security</category><category>dev-tools</category></item><item><title>Run five checks before merging AI-written code</title><link>https://fullbytedeveloper.com/blog/check-ai-code-before-merging</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/check-ai-code-before-merging</guid><description>Check secrets, unused code, duplication and dependencies, then put repeatable checks in hooks.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gitleaks, Knip, jscpd, OSV-Scanner and Lefthook cover different parts of a review. Their documentation describes secret detection, unused-code analysis, duplicate-code detection, dependency scanning and Git hooks respectively &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;scan-the-repository-for-secrets&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01scan-the-repository-for-secrets&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Scan the repository for secrets&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;scan-the-repository-for-secrets&quot; aria-label=&quot;Copy link to step 1: Scan the repository for secrets&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;On macOS with Homebrew, Gitleaks documents this installation. Run the scan from your repository &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; gitleaks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;gitleaks&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; git&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -v&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Review each finding before sharing scan output: it can contain the secret that was found &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-unused-code-and-duplication&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-unused-code-and-duplication&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check unused code and duplication&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-unused-code-and-duplication&quot; aria-label=&quot;Copy link to step 2: Check unused code and duplication&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Follow Knip&apos;s setup for your JavaScript or TypeScript project. Review its reported entry points before removing anything it considers unused &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;For duplication, jscpd documents a one-off scan &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; jscpd&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use the duplicate locations to inspect the code. Similar text can still serve different behavior.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;scan-dependency-files&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03scan-dependency-files&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Scan dependency files&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;scan-dependency-files&quot; aria-label=&quot;Copy link to step 3: Scan dependency files&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Install OSV-Scanner using its documented installation for your system. Its source scan walks supported package files &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. Replace the example directory with your checkout.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;osv-scanner&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; scan&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; source&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; /path/to/your/dir&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;keep-the-useful-checks-in-hooks&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04keep-the-useful-checks-in-hooks&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep the useful checks in hooks&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-the-useful-checks-in-hooks&quot; aria-label=&quot;Copy link to step 4: Keep the useful checks in hooks&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Lefthook runs commands you define in &lt;code&gt;lefthook.yml&lt;/code&gt;. After configuring those commands, its README installs them into the Git project with &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-code-before-merging#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;lefthook&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Keep your application&apos;s tests in the review too. These tools report particular problems; a clean scan does not prove the feature works.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>MERGEGATE</category><category>security</category><category>dev-tools</category></item><item><title>Check packages before trusting an AI suggestion</title><link>https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies</guid><description>Inspect package provenance, lockfile hosts and known vulnerabilities before accepting new dependencies.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An AI-generated package name needs the same review as any new dependency. These tools check package metadata, suspicious code, download hosts and known vulnerabilities, per their documentation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;review-an-npm-package-before-installation&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01review-an-npm-package-before-installation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review an npm package before installation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-an-npm-package-before-installation&quot; aria-label=&quot;Copy link to step 1: Review an npm package before installation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The npq README documents this install command. It checks package characteristics before handing installation to your package manager. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -g&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; npq&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Its usage example installs Express after the checks. Replace that name only after confirming the package you intend to use. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npq&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; express&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;inspect-package-code-with-guarddog&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02inspect-package-code-with-guarddog&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect package code with GuardDog&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-package-code-with-guarddog&quot; aria-label=&quot;Copy link to step 2: Inspect package code with GuardDog&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;After installing GuardDog through its documented setup, its npm scan command checks a package for suspicious behavior. The README uses this example. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;guarddog&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; scan&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; express&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Review findings before deciding whether to install the package.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;restrict-lockfile-download-hosts&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03restrict-lockfile-download-hosts&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Restrict lockfile download hosts&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;restrict-lockfile-download-hosts&quot; aria-label=&quot;Copy link to step 3: Restrict lockfile download hosts&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;For an npm lockfile, the post&apos;s supplied command checks the allowed registry host and HTTPS URLs. The lockfile-lint README documents those checks. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; lockfile-lint&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --path&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; package-lock.json&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --type&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --allowed-hosts&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --validate-https&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see no findings when the file passes, per the README. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;scan-installed-dependencies-for-advisories&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04scan-installed-dependencies-for-advisories&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Scan installed dependencies for advisories&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;scan-installed-dependencies-for-advisories&quot; aria-label=&quot;Copy link to step 4: Scan installed dependencies for advisories&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Grype scans filesystems and container images for known vulnerabilities. Use its linked installation and scan-target documentation for your project type. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;For Python requirements, pip-audit documents this command. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; pip-audit can resolve dependencies and is not a malicious-code detector. Its security model says to audit only input you would trust to install. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;pip-audit&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ./requirements.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The report lists known vulnerabilities and available fixes. A clean report leaves provenance and application-specific review for you. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/check-ai-suggested-package-dependencies#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>DEPGATE</category><category>security</category><category>dev-tools</category></item><item><title>Choose an AI workflow before building an agent</title><link>https://fullbytedeveloper.com/blog/choose-ai-workflow-before-agent</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/choose-ai-workflow-before-agent</guid><description>Match a task to a fixed workflow first, then add an agent loop only when the work needs one.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anthropic recommends starting with the simplest workable approach and adding complexity when it improves results. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ai-workflow-before-agent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;try-one-model-call-first&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01try-one-model-call-first&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Try one model call first&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;try-one-model-call-first&quot; aria-label=&quot;Copy link to step 1: Try one model call first&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Give the model relevant context and examples. Define a useful result before adding orchestration. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ai-workflow-before-agent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;match-the-task-to-a-workflow&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02match-the-task-to-a-workflow&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Match the task to a workflow&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;match-the-task-to-a-workflow&quot; aria-label=&quot;Copy link to step 2: Match the task to a workflow&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic describes five patterns. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ai-workflow-before-agent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompt chaining divides work into fixed steps with checks between them.&lt;/li&gt;
&lt;li&gt;Routing sends different inputs to specialized handlers.&lt;/li&gt;
&lt;li&gt;Parallelization handles independent parts or compares several attempts.&lt;/li&gt;
&lt;li&gt;Orchestrator-workers lets a model divide work whose subtasks are not predictable.&lt;/li&gt;
&lt;li&gt;Evaluator-optimizer uses feedback to revise a result.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Choose the pattern around your task&apos;s uncertainty. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ai-workflow-before-agent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-an-agent-loop-only-where-needed&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03add-an-agent-loop-only-where-needed&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add an agent loop only where needed&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-an-agent-loop-only-where-needed&quot; aria-label=&quot;Copy link to step 3: Add an agent loop only where needed&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic says agent loops can cost more and compound mistakes. Test the tool boundaries and stopping conditions before using one on consequential work. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ai-workflow-before-agent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;For coding tools, the guide reports that absolute file paths avoided mistakes caused by a changed working directory. Require them in file-editing tools. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ai-workflow-before-agent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>SIMPLEFIRST</category><category>ai-agents</category></item><item><title>Compare Zapier, n8n and Activepieces</title><link>https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation</guid><description>Compare hosting and licence terms before choosing where your automation credentials and workflows will live.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Zapier provides hosted automation plans. n8n and Activepieces also document self-hosting, where you operate the server and store the connected-app credentials. Compare that responsibility before comparing plan prices. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;read-the-licence-for-your-use&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01read-the-licence-for-your-use&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Read the licence for your use&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;read-the-licence-for-your-use&quot; aria-label=&quot;Copy link to step 1: Read the licence for your use&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;n8n&apos;s Sustainable Use License limits use to your own internal business purposes, non-commercial use or personal use, with separate terms for enterprise code. Read the full licence before building a service for clients. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Activepieces&apos; licence applies MIT terms outside its listed enterprise directories. Those directories have separate terms. Check the specific features you intend to deploy. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;choose-an-n8n-deployment-path&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02choose-an-n8n-deployment-path&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose an n8n deployment path&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-an-n8n-deployment-path&quot; aria-label=&quot;Copy link to step 2: Choose an n8n deployment path&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The current n8n Docker Compose guide includes configuration for its assistant sandbox. Follow its service and networking instructions together; a single start command is not the full deployment. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Before starting, verify your Compose installation with its documented check. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see Docker Compose v2. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;inspect-activepieces-setup&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03inspect-activepieces-setup&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect Activepieces setup&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-activepieces-setup&quot; aria-label=&quot;Copy link to step 3: Inspect Activepieces setup&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Activepieces requires Docker Compose v2 and documents at least 2 vCPU and 4 GB RAM. Its guide provides this command to print the installer for review. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -fsSL&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://get.activepieces.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;After reviewing the script, follow the linked installation guide in a dedicated directory. It generates secrets and starts the services. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-self-hosted-workflow-automation#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Check the current pricing pages and the connections your workflow needs before migrating it. Keep an export of the working workflow and a backup of its self-hosted data.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>SELFFLOW</category><category>dev-tools</category><category>ai-agents</category></item><item><title>Choose an SEO skill for each job</title><link>https://fullbytedeveloper.com/blog/choose-seo-skills-by-task</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/choose-seo-skills-by-task</guid><description>Match site audits, AI search, schema, page templates and blog writing to documented Claude Code workflows.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A site audit and a new blog post need different instructions. The Short covers five SEO jobs. Here are current documented options for those jobs: Claude SEO handles the first four, and Claude Blog handles writing. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;audit-the-site&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01audit-the-site&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Audit the site&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;audit-the-site&quot; aria-label=&quot;Copy link to step 1: Audit the site&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude SEO documents a site audit and a narrower page review. Start with the &lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-seo-plugin-site-audit&quot;&gt;installation and first audit guide&lt;/a&gt;, then choose the scope. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/seo audit https://example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-ai-search-readiness&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02review-ai-search-readiness&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review AI search readiness&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-ai-search-readiness&quot; aria-label=&quot;Copy link to step 2: Review AI search readiness&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Its GEO command checks how a site can be discovered and quoted in AI answers. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/seo geo https://example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-structured-data&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-structured-data&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check structured data&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-structured-data&quot; aria-label=&quot;Copy link to step 3: Check structured data&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The schema command detects, validates and generates Schema.org markup. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/seo schema https://example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;plan-pages-built-from-data&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04plan-pages-built-from-data&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Plan pages built from data&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;plan-pages-built-from-data&quot; aria-label=&quot;Copy link to step 4: Plan pages built from data&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The programmatic command reviews and plans programmatic SEO. Use it when many pages share a template. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/seo programmatic https://example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;research-and-write-a-post&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05research-and-write-a-post&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Research and write a post&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;research-and-write-a-post&quot; aria-label=&quot;Copy link to step 5: Research and write a post&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude Blog documents research, drafting and review, plus separate fact-checking commands. Its current requirements include Claude Code and Python 3.11 or newer. Read its installation instructions before starting. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Once installed, its documented workflow includes: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/blog strategy &quot;freelance CRM software&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/blog write &quot;best CRM for freelancers&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/blog analyze posts/best-crm.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Review generated claims and links yourself. The project&apos;s own FAQ says it cannot promise citations in AI answers. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-seo-skills-by-task#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>claude-code</category><category>dev-tools</category></item><item><title>Choose design skills for five UI tasks</title><link>https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills</guid><description>Use separate guidance for visual direction, components, motion and interface review.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Pick a design skill around the change you need. These five projects cover different parts of interface work; their documentation is the basis for the choices below. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;set-the-visual-rules&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01set-the-visual-rules&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Set the visual rules&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;set-the-visual-rules&quot; aria-label=&quot;Copy link to step 1: Set the visual rules&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;UI UX Pro Max documents recommendations for colors, typography and layouts, plus a generated design system that can be saved for later pages. Use that written system to keep subsequent changes consistent. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Hallmark focuses on visual direction and reviewing generated interfaces. Its repository documents installation and agent-specific invocation. For an existing page, follow the &lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page&quot;&gt;Hallmark audit and redesign guide&lt;/a&gt;. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;work-on-the-interaction&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02work-on-the-interaction&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Work on the interaction&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;work-on-the-interaction&quot; aria-label=&quot;Copy link to step 2: Work on the interaction&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Emil Kowalski&apos;s collection includes skills for building, reviewing and removing animations. That last option matters when repeated motion gets in the way. Its README gives this installation command: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills@latest&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; emilkowalski/skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Choose the animation review skill when a transition feels wrong; choose the removal skill when the interaction needs less motion. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;use-the-component-library-correctly&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03use-the-component-library-correctly&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Use the component library correctly&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;use-the-component-library-correctly&quot; aria-label=&quot;Copy link to step 3: Use the component library correctly&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The shadcn skill reads project configuration so the assistant can find, install and compose components using the project&apos;s setup. Its documentation shows this pnpm installation: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;pnpm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; dlx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; shadcn/ui&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This is useful when the task is a form, dialog or settings panel built with shadcn/ui. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-the-finished-interface&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04review-the-finished-interface&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review the finished interface&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-the-finished-interface&quot; aria-label=&quot;Copy link to step 4: Review the finished interface&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Vercel&apos;s &lt;code&gt;web-design-guidelines&lt;/code&gt; skill reviews interface code for accessibility, focus states, forms, animation, images and other web conventions. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/choose-ui-design-agent-skills#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Give the review a specific page and task. Then inspect the rendered result with a keyboard and a narrow viewport. A repository of instructions cannot decide whether your particular layout reads well; keep the changes you can explain and verify.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>claude-code</category><category>dev-tools</category></item><item><title>Use less context before raising your AI plan</title><link>https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits</guid><description>Keep chats focused, reuse project files and choose effort levels that fit the task.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Long conversations, large attachments and unnecessary tool calls can use more of your allowance. Start by changing what goes into a task before deciding that you need a larger plan &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;start-a-fresh-chat-for-unrelated-work&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01start-a-fresh-chat-for-unrelated-work&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start a fresh chat for unrelated work&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-a-fresh-chat-for-unrelated-work&quot; aria-label=&quot;Copy link to step 1: Start a fresh chat for unrelated work&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude distinguishes a conversation&apos;s length limit from the usage allowance across conversations. Starting a new chat does not reset the allowance. It can reduce the context carried into your next task &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;When moving to a different job, bring only the files and decisions that job needs. Keep related follow-up work together so you do not have to explain the same problem again.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;match-effort-to-the-task&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02match-effort-to-the-task&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Match effort to the task&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;match-effort-to-the-task&quot; aria-label=&quot;Copy link to step 2: Match effort to the task&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic&apos;s Claude Code guidance recommends Sonnet for routine coding and reserves Opus for harder work because Opus uses more quota &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;OpenAI describes ChatGPT&apos;s Instant setting as suitable for everyday questions, with higher thinking settings for work that needs them. Available choices and limits depend on the plan and workspace &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. Neither provider promises a fixed saving from changing the model.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;combine-related-questions&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03combine-related-questions&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Combine related questions&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;combine-related-questions&quot; aria-label=&quot;Copy link to step 3: Combine related questions&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Ask for the connected parts of a task in one clear message. Anthropic recommends batching similar requests and giving the relevant background upfront &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. For example:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Review this function for the reported bug. Explain the cause,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;suggest the smallest fix, and list the cases the test should cover.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Do not change the files yet.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;reuse-project-material&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04reuse-project-material&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Reuse project material&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;reuse-project-material&quot; aria-label=&quot;Copy link to step 4: Reuse project material&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude caches project content, so reused material can count less against usage while it remains cached. Caches expire after inactivity &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Put recurring reference documents in the project, and remove files that no longer help the work.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;keep-tools-and-thinking-purposeful&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05keep-tools-and-thinking-purposeful&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep tools and thinking purposeful&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-tools-and-thinking-purposeful&quot; aria-label=&quot;Copy link to step 5: Keep tools and thinking purposeful&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude&apos;s guidance recommends disabling unused connected apps and avoiding web searches when current information is unnecessary. On models that offer a thinking toggle, switch it off for simple work; on always-thinking models, lower the effort level &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Keep search enabled when the answer depends on current facts. Saving a tool call is not useful if the answer relies on outdated information.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-your-own-allowance&quot; data-step=&quot;6&quot;&gt;&lt;h2 id=&quot;06check-your-own-allowance&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;06&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check your own allowance&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-your-own-allowance&quot; aria-label=&quot;Copy link to step 6: Check your own allowance&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude&apos;s Settings &gt; Usage shows consumption and reset information for supported plans &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. ChatGPT displays allowance resets when available; its limits differ by model, plan and workspace &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-chatgpt-usage-limit-habits#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. Check those controls before starting a long task. A new chat changes the context, not the reset time.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>LIMITS</category><category>cost-and-context</category></item><item><title>Use five built-in Claude Code shortcuts</title><link>https://fullbytedeveloper.com/blog/claude-code-five-interactive-shortcuts</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-five-interactive-shortcuts</guid><description>Inspect context, ask side questions and review changes without installing another plugin.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Claude Code includes shortcuts for checking context and working with an active session. These controls come from its interactive-mode documentation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-interactive-shortcuts#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;inspect-the-context-window&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01inspect-the-context-window&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect the context window&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-the-context-window&quot; aria-label=&quot;Copy link to step 1: Inspect the context window&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Enter this inside Claude Code. It shows what is using the session&apos;s context. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-interactive-shortcuts#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/context&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;ask-a-side-question&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02ask-a-side-question&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Ask a side question&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;ask-a-side-question&quot; aria-label=&quot;Copy link to step 2: Ask a side question&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The documented side-question command can run while Claude works. It uses existing context and cannot fetch new files or run tools. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-interactive-shortcuts#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/btw what was the name of that config file again?&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;paste-an-image&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03paste-an-image&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Paste an image&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;paste-an-image&quot; aria-label=&quot;Copy link to step 3: Paste an image&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Copy a screenshot, then use &lt;code&gt;Ctrl+V&lt;/code&gt;. The docs list &lt;code&gt;Cmd+V&lt;/code&gt; for iTerm2 and &lt;code&gt;Alt+V&lt;/code&gt; for Windows and WSL. You should see an image chip in the prompt. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-interactive-shortcuts#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;read-shell-output-in-the-session&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04read-shell-output-in-the-session&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Read shell output in the session&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;read-shell-output-in-the-session&quot; aria-label=&quot;Copy link to step 4: Read shell output in the session&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;This documented shell-mode example adds the command and its output to the conversation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-interactive-shortcuts#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;! git status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;open-the-rewind-controls&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05open-the-rewind-controls&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Open the rewind controls&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;open-the-rewind-controls&quot; aria-label=&quot;Copy link to step 5: Open the rewind controls&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Press &lt;code&gt;Esc&lt;/code&gt; twice or enter &lt;code&gt;/rewind&lt;/code&gt; to review an earlier point. Inspect the available choices before restoring changes. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-interactive-shortcuts#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Use the control for the task at hand; none needs another plugin.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>claude-code</category><category>cost-and-context</category></item><item><title>Use Claude Code hooks for status notifications</title><link>https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications</guid><description>Choose events for working, permission requests and completion without granting permissions automatically.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Claude Code hooks can signal when a session needs your attention, per the hook reference. A status widget or notification can react to those events without approving a tool call. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;choose-events-for-each-state&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01choose-events-for-each-state&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose events for each state&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-events-for-each-state&quot; aria-label=&quot;Copy link to step 1: Choose events for each state&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The reference describes these lifecycle events. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;UserPromptSubmit&lt;/code&gt; fires when you submit a prompt.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PostToolUse&lt;/code&gt; fires after a tool succeeds.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PermissionRequest&lt;/code&gt; fires when Claude is about to request permission.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Stop&lt;/code&gt; fires when Claude finishes responding; an interrupted response does not trigger it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the first two for a working indicator, &lt;code&gt;PermissionRequest&lt;/code&gt; for an attention indicator and &lt;code&gt;Stop&lt;/code&gt; for completion. Keep the display separate from permission-decision output. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-a-notification-hook&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02add-a-notification-hook&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add a notification hook&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-a-notification-hook&quot; aria-label=&quot;Copy link to step 2: Add a notification hook&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Follow the hook guide&apos;s desktop-notification example in your Claude settings. Choose a command for your operating system. The guide includes macOS and Linux options. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; hooks run shell commands. Read a hook before installing it, especially if it comes from another repository. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-configured-hooks&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-the-configured-hooks&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the configured hooks&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-configured-hooks&quot; aria-label=&quot;Copy link to step 3: Check the configured hooks&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Inside Claude Code, inspect the configured hooks with the guide&apos;s command. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/hooks&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see your event and command listed. Trigger a notification with a harmless task before connecting the same signal to a light or desktop widget. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;permission_prompt&lt;/code&gt; notification waits before firing. Use &lt;code&gt;PermissionRequest&lt;/code&gt; when you need the signal at the permission request itself; the reference notes separate behavior for sandbox network prompts. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-hook-status-notifications#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>HOOKLIGHT</category><category>claude-code</category></item><item><title>Check five Claude Code compaction and sandbox fixes</title><link>https://fullbytedeveloper.com/blog/claude-code-october-compaction-sandbox-fixes</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-october-compaction-sandbox-fixes</guid><description>Review the 2.1.309 and 2.1.311 fixes for long sessions, stale instructions, MCP tools and sandbox behavior.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Claude Code releases 2.1.309 and 2.1.311 fix several failures that can look like a model ignoring instructions or getting stuck. Our WEEKLY post covers these October releases &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-october-compaction-sandbox-fixes#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-october-compaction-sandbox-fixes#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-the-installed-version&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-the-installed-version&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the installed version&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-installed-version&quot; aria-label=&quot;Copy link to step 1: Check the installed version&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;If your installation supports Claude Code&apos;s updater, run &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-october-compaction-sandbox-fixes#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; update&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For a package-manager installation, use that manager&apos;s update instructions in the setup documentation. Confirm the version after updating; these fixes first appeared in the releases below.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;four-session-fixes-in-2-1-311&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02four-session-fixes-in-21311&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Four session fixes in 2.1.311&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;four-session-fixes-in-2-1-311&quot; aria-label=&quot;Copy link to step 2: Four session fixes in 2.1.311&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Standard-context sessions that crossed 200K tokens could stop with a usage-credit error. The fix makes them compact and continue.&lt;/li&gt;
&lt;li&gt;Edits to &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;MEMORY.md&lt;/code&gt; could be stale immediately after automatic compaction. The release fixes that stale view.&lt;/li&gt;
&lt;li&gt;Subagents could miss MCP tools when the server finished connecting after the subagent started. The release fixes that timing problem.&lt;/li&gt;
&lt;li&gt;A very long list item in &lt;code&gt;CLAUDE.md&lt;/code&gt; could cause long freezes during startup or file work. The release fixes those freezes &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-october-compaction-sandbox-fixes#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compaction still summarizes context. Keep instructions concise and check the actual file when a response appears to use an old rule.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;sandbox-fixes-in-2-1-309&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03sandbox-fixes-in-21309&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Sandbox fixes in 2.1.309&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;sandbox-fixes-in-2-1-309&quot; aria-label=&quot;Copy link to step 3: Sandbox fixes in 2.1.309&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The earlier release fixes shell startup files running outside the sandbox before sandboxed Bash commands on macOS and Linux. It also prevents sandboxed commands and auto-accepted edits from modifying the file supplied through &lt;code&gt;--mcp-config&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-october-compaction-sandbox-fixes#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;These are specific fixes. Keep your existing sandbox and permission settings enabled after updating. If you were working around one of these bugs, retry the original task with the updated client and record the version alongside the result.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>WEEKLY</category><category>claude-code</category><category>security</category></item><item><title>Separate Claude Code sessions with Git worktrees</title><link>https://fullbytedeveloper.com/blog/claude-code-parallel-worktree-sessions</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-parallel-worktree-sessions</guid><description>Give parallel sessions separate files and branches while keeping their shared repository history.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Claude Code&apos;s worktree docs describe separate working folders and branches for parallel sessions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-parallel-worktree-sessions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Use one per task when two sessions would otherwise edit the same files.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;start-the-first-isolated-session&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01start-the-first-isolated-session&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start the first isolated session&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-the-first-isolated-session&quot; aria-label=&quot;Copy link to step 1: Start the first isolated session&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;From your Git repository, use the documented example &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-parallel-worktree-sessions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --worktree&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; feature-auth&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see a worktree at &lt;code&gt;.claude/worktrees/feature-auth&lt;/code&gt; on branch &lt;code&gt;worktree-feature-auth&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-parallel-worktree-sessions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. In another terminal, use a different worktree name for the second task.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;keep-generated-worktrees-out-of-status&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02keep-generated-worktrees-out-of-status&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep generated worktrees out of status&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-generated-worktrees-out-of-status&quot; aria-label=&quot;Copy link to step 2: Keep generated worktrees out of status&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Add this entry to your existing ignore file, preserving its other entries &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-parallel-worktree-sessions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-title=&quot;.gitignore&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.gitignore&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot; data-title=&quot;.gitignore&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.claude/worktrees/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;copy-only-the-ignored-files-you-need&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03copy-only-the-ignored-files-you-need&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Copy only the ignored files you need&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;copy-only-the-ignored-files-you-need&quot; aria-label=&quot;Copy link to step 3: Copy only the ignored files you need&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;A fresh checkout lacks untracked environment files. The documented &lt;code&gt;.worktreeinclude&lt;/code&gt; mechanism copies files only when they match its patterns and are also Git-ignored &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-parallel-worktree-sessions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; this creates additional copies of your local environment files. Include secrets only when the isolated task needs them.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-title=&quot;.worktreeinclude&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.worktreeinclude&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot; data-title=&quot;.worktreeinclude&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.env&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.env.local&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-work-before-cleanup&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04review-work-before-cleanup&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review work before cleanup&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-work-before-cleanup&quot; aria-label=&quot;Copy link to step 4: Review work before cleanup&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The docs say Claude prompts about keeping or removing a worktree when it contains changes or commits. Keep any work you still need &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-parallel-worktree-sessions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Separate worktrees isolate file edits; they are not a substitute for reviewing the combined changes before merging.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>TREE</category><category>claude-code</category><category>dev-tools</category></item><item><title>Choose a Claude Code plugin for the task</title><link>https://fullbytedeveloper.com/blog/claude-code-plugins-by-task</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-plugins-by-task</guid><description>Install the plugin that matches your work, after reviewing its code and permissions.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Choose the plugin for the job in front of you. Claude Code&apos;s plugin manager lets you inspect and manage installed plugins &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-plugins-by-task#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. The four choices from our PLUGPICK post cover development process, documents, session memory and interface design.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; review a plugin&apos;s code, hooks and server configuration before installing it. Installation can add executable components to your environment.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;add-superpowers-for-a-development-workflow&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01add-superpowers-for-a-development-workflow&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add Superpowers for a development workflow&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-superpowers-for-a-development-workflow&quot; aria-label=&quot;Copy link to step 1: Add Superpowers for a development workflow&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Superpowers describes a workflow built around planning, tests and review. Its README gives this Claude Code command &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-plugins-by-task#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install superpowers@claude-plugins-official&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-anthropic-skills-for-documents&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02add-anthropic-skills-for-documents&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add Anthropic skills for documents&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-anthropic-skills-for-documents&quot; aria-label=&quot;Copy link to step 2: Add Anthropic skills for documents&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic&apos;s repository includes skills for PDF, Word, spreadsheets and presentations. Run these commands inside Claude Code &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-plugins-by-task#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add anthropics/skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install document-skills@anthropic-agent-skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;After installation, the README says you can request a skill by name, such as the PDF skill &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-plugins-by-task#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-claude-mem-for-session-context&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03add-claude-mem-for-session-context&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add Claude-Mem for session context&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-claude-mem-for-session-context&quot; aria-label=&quot;Copy link to step 3: Add Claude-Mem for session context&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude-Mem describes capturing session activity and supplying relevant context to later sessions. Its current README gives these commands, followed by restarting Claude Code &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-plugins-by-task#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add thedotmack/claude-mem&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install claude-mem&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The README says context from earlier sessions appears in later sessions. Review what the plugin records before using it with sensitive work &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-plugins-by-task#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-ui-ux-pro-max-for-interface-work&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04add-ui-ux-pro-max-for-interface-work&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add UI UX Pro Max for interface work&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-ui-ux-pro-max-for-interface-work&quot; aria-label=&quot;Copy link to step 4: Add UI UX Pro Max for interface work&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The repository supplies design guidance and these marketplace commands &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-plugins-by-task#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add nextlevelbuilder/ui-ux-pro-max-skill&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install ui-ux-pro-max@ui-ux-pro-max-skill&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use the chosen plugin on a real task before adding another. The plugin manager remains the place to inspect what is installed and remove what you no longer use &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-plugins-by-task#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>PLUGPICK</category><category>claude-code</category><category>dev-tools</category></item><item><title>Build a video with Claude Code and Remotion</title><link>https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup</guid><description>Start a Remotion project, time spoken words and prepare assets before rendering your video.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Remotion&apos;s coding-agent guide provides a project setup you can edit with Claude Code &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Plan the spoken line, visual and tool for each shot first, as in our VIDEO post. Approve that plan before generating the scenes.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;start-a-remotion-project&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01start-a-remotion-project&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start a Remotion project&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-a-remotion-project&quot; aria-label=&quot;Copy link to step 1: Start a Remotion project&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The current Remotion guide uses these commands. It requires Node.js and a coding agent &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; create-video&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --yes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --blank&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; my-video&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; my-video&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; remotion&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The first command creates a blank project in &lt;code&gt;my-video&lt;/code&gt;. Open another terminal in that project to start Claude Code &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; my-video&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;get-timestamps-for-spoken-words&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02get-timestamps-for-spoken-words&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Get timestamps for spoken words&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;get-timestamps-for-spoken-words&quot; aria-label=&quot;Copy link to step 2: Get timestamps for spoken words&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The faster-whisper README documents installation and word-level timestamps &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;pip&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; faster-whisper&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This combines its CPU model setup and word timestamp example. Replace &lt;code&gt;voice.wav&lt;/code&gt; with your narration file &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;python&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;python&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; faster_whisper &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; WhisperModel&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;model &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; WhisperModel(&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;large-v3&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;, device&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;cpu&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;, compute_type&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;int8&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;segments, _ &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; model.transcribe(&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;voice.wav&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;, word_timestamps&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;True)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; segment &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; segments:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; word &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; segment.words:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;[%.2fs -&gt; %.2fs] %s&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt; %&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; (word.start, word.end, word.word))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see timestamped words. The README notes that transcription happens when the segment generator is consumed, and loading a model by name downloads its files &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;prepare-a-cutout-when-the-scene-needs-one&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03prepare-a-cutout-when-the-scene-needs-one&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Prepare a cutout when the scene needs one&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;prepare-a-cutout-when-the-scene-needs-one&quot; aria-label=&quot;Copy link to step 3: Prepare a cutout when the scene needs one&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;For text placed behind a subject, rembg documents removing a local image&apos;s background. Use artwork you have permission to publish &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;pip&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;rembg[cpu,cli]&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;rembg&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; i&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; in.png&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; out.png&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Inspect &lt;code&gt;out.png&lt;/code&gt; before compositing it. Keep the original image so you can correct a poor mask.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;apply-the-post-s-optional-grade&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04apply-the-posts-optional-grade&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Apply the post&apos;s optional grade&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;apply-the-post-s-optional-grade&quot; aria-label=&quot;Copy link to step 4: Apply the post&amp;#x27;s optional grade&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The VIDEO setup guide uses this FFmpeg filter chain. The filters reference describes curves, saturation adjustment and vignette &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;. Use your rendered video as &lt;code&gt;in.mp4&lt;/code&gt; and a new destination filename.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;ffmpeg&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; in.mp4&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -vf&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;curves=master=&apos;0/0.05 0.5/0.48 0.85/0.80 1/0.92&apos;,eq=saturation=0.85,vignette=angle=PI/5&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; out.mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Check caption timing and readability on the final export. Remotion&apos;s license FAQ permits free use for individuals and teams of up to three people; check the current terms for your organization before commercial production &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-remotion-video-setup#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>VIDEO</category><category>dev-tools</category><category>claude-code</category></item><item><title>Give new Claude Code sessions your project facts</title><link>https://fullbytedeveloper.com/blog/claude-code-session-memory-template</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-session-memory-template</guid><description>Keep a short CLAUDE.md for recurring project facts, then check which instructions loaded.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A new Claude Code session starts with a fresh context window. The memory docs say project instruction files and auto memory carry information into it &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-session-memory-template#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. A short &lt;code&gt;CLAUDE.md&lt;/code&gt; gives you a place to keep facts you keep repeating.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;write-the-facts-the-next-session-needs&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01write-the-facts-the-next-session-needs&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Write the facts the next session needs&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;write-the-facts-the-next-session-needs&quot; aria-label=&quot;Copy link to step 1: Write the facts the next session needs&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Adapt the example from our MEMORY post to your project. Replace every line that is untrue before saving it in the project root.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;md&quot; data-title=&quot;CLAUDE.md&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;CLAUDE.md&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;md&quot; data-title=&quot;CLAUDE.md&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;# Project context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;- Stack: Next.js + Postgres&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;- Auth is done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;- Do not redo auth&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The docs describe &lt;code&gt;CLAUDE.md&lt;/code&gt; as context the model tries to follow. It does not enforce access restrictions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-session-memory-template#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Use &lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-env-lock&quot;&gt;permission rules to protect secrets&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-file-in-claude-code&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-the-file-in-claude-code&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the file in Claude Code&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-file-in-claude-code&quot; aria-label=&quot;Copy link to step 2: Check the file in Claude Code&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Run the documented command inside a session &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-session-memory-template#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/memory&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the instruction file locations. Select the project file to read or edit it.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;keep-the-instructions-current&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03keep-the-instructions-current&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep the instructions current&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-the-instructions-current&quot; aria-label=&quot;Copy link to step 3: Keep the instructions current&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Remove completed-work notes once they stop helping future sessions. Put recurring decisions in concrete sentences. If a rule is ignored, the docs recommend checking for conflicting instructions and confirming that the file loaded &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-session-memory-template#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;For procedures that deserve their own skill or hook, see &lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong&quot;&gt;where each Claude Code instruction belongs&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>MEMORY</category><category>claude-code</category><category>cost-and-context</category></item><item><title>Choose a slide tool for Claude Code</title><link>https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools</guid><description>Choose web slides, editable Office files or Markdown exports before installing a presentation tool.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Your output format decides which slide tool to use. These projects support web presentations, Office files or Markdown exports, per their documentation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;make-a-web-deck-with-frontend-slides&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01make-a-web-deck-with-frontend-slides&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Make a web deck with Frontend Slides&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;make-a-web-deck-with-frontend-slides&quot; aria-label=&quot;Copy link to step 1: Make a web deck with Frontend Slides&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The README asks you to send these as separate Claude Code messages, waiting for the first to finish. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add https://github.com/zarazhangrui/frontend-slides&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install frontend-slides@frontend-slides&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Then start its installed skill. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/frontend-slides:frontend-slides&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;edit-office-files-with-officecli&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02edit-office-files-with-officecli&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Edit Office files with OfficeCLI&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;edit-office-files-with-officecli&quot; aria-label=&quot;Copy link to step 2: Edit Office files with OfficeCLI&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;OfficeCLI documents this npm installation and explicit skill installation. It works with PowerPoint, Word and Excel files. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -g&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; @officecli/officecli&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;officecli&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;export-markdown-with-marp&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03export-markdown-with-marp&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Export Markdown with Marp&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;export-markdown-with-marp&quot; aria-label=&quot;Copy link to step 3: Export Markdown with Marp&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;For an existing Markdown deck, the CLI supports a PowerPoint export. Its ordinary PowerPoint output contains rendered slide images; editable output is a separate experimental option. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; @marp-team/marp-cli@latest&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; slide-deck.md&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --pptx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Check the exported deck in the application your audience will use.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;connect-genoffice-to-your-agent&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04connect-genoffice-to-your-agent&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Connect GenOffice to your agent&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;connect-genoffice-to-your-agent&quot; aria-label=&quot;Copy link to step 4: Connect GenOffice to your agent&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Install the GenOffice app first, then use its Settings &gt; Integrations page or the documented skill command. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; genspark-ai/genoffice&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;start-a-code-talk-with-slidev&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05start-a-code-talk-with-slidev&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start a code talk with Slidev&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-a-code-talk-with-slidev&quot; aria-label=&quot;Copy link to step 5: Start a code talk with Slidev&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Slidev uses Markdown and web components. Its getting-started guide provides this npm project command. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-slide-creation-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;7&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;7&quot; aria-label=&quot;Copy code block 7&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; init&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; slidev@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Choose one tool around the file you need to deliver. For PowerPoint, check editability before committing to a whole deck.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>SLIDES</category><category>claude-code</category><category>dev-tools</category></item><item><title>Choose five tools for working with spreadsheet data</title><link>https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools</guid><description>Use SQL, CSV tools or a notebook for the calculation, then review what your agent sends to its model.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;DuckDB, Anthropic&apos;s data plugin, csvkit, Datasette and marimo give you different ways to inspect a dataset, per their documentation &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;. Choose the tool for the operation you need before asking an agent to analyze the whole file.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;use-sql-for-a-focused-calculation&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01use-sql-for-a-focused-calculation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Use SQL for a focused calculation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;use-sql-for-a-focused-calculation&quot; aria-label=&quot;Copy link to step 1: Use SQL for a focused calculation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;DuckDB is an analytical database with support for tabular data &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Use a query to select the columns and aggregate you need. Check the query and a small sample against the original file before relying on its result.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;use-the-data-plugin-for-a-guided-analysis&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02use-the-data-plugin-for-a-guided-analysis&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Use the data plugin for a guided analysis&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;use-the-data-plugin-for-a-guided-analysis&quot; aria-label=&quot;Copy link to step 2: Use the data plugin for a guided analysis&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic&apos;s data plugin provides analysis and dashboard workflows for Claude &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Review its instructions and connectors before installation, especially when the dataset contains private information.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;inspect-a-csv-with-csvkit&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03inspect-a-csv-with-csvkit&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect a CSV with csvkit&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-a-csv-with-csvkit&quot; aria-label=&quot;Copy link to step 3: Inspect a CSV with csvkit&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The csvkit tutorial documents its Python installation &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Use an isolated Python environment if your operating system manages its own Python packages.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;pip&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; csvkit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Work through the linked tutorial to inspect columns, convert formats and calculate statistics &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;choose-a-browser-or-notebook-view&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04choose-a-browser-or-notebook-view&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose a browser or notebook view&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-a-browser-or-notebook-view&quot; aria-label=&quot;Copy link to step 4: Choose a browser or notebook view&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Datasette provides a web interface for exploring data and JSON access to results &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. marimo provides a reactive Python notebook &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-spreadsheet-data-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;. Pick the format you can inspect and rerun.&lt;/p&gt;
&lt;p&gt;A file processed locally can still produce tool output that your agent sends to its model. Review the agent&apos;s data handling before using confidential rows. Keep the calculation and its input alongside the answer so another person can reproduce it.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>SHEETS</category><category>dev-tools</category><category>claude-code</category></item><item><title>Give Claude Design an existing design system</title><link>https://fullbytedeveloper.com/blog/claude-design-existing-brand-system</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-design-existing-brand-system</guid><description>Choose a design reference, import its assets and review the result before reusing it.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Open Design Agent Kit collects design systems, skills and examples that coding agents can read. Its repository includes a &lt;code&gt;claude-design-systems&lt;/code&gt; directory &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-design-existing-brand-system#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. I would choose one reference that fits the product before asking an agent to design a whole site.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;choose-the-reference-for-your-product&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01choose-the-reference-for-your-product&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose the reference for your product&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-the-reference-for-your-product&quot; aria-label=&quot;Copy link to step 1: Choose the reference for your product&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Browse the repository&apos;s design systems and examples &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-design-existing-brand-system#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Check the typography, navigation and content density against your own page. A dashboard reference and a reading-focused publication solve different problems.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-the-system-in-claude-design&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02add-the-system-in-claude-design&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add the system in Claude Design&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-the-system-in-claude-design&quot; aria-label=&quot;Copy link to step 2: Add the system in Claude Design&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic&apos;s setup guide describes creating a design system from supplied assets, including a codebase or design references. The system stores colors, typography, components and layout patterns for later work &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-design-existing-brand-system#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Follow the account-specific setup in that guide and supply the selected system&apos;s files.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-a-real-page-before-reusing-it&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-a-real-page-before-reusing-it&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review a real page before reusing it&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-a-real-page-before-reusing-it&quot; aria-label=&quot;Copy link to step 3: Review a real page before reusing it&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Check a page containing your actual title, navigation and longest content. Look at narrow and wide layouts, link states and text contrast. Record the corrections in the system you reuse.&lt;/p&gt;
&lt;p&gt;Keep your own branding and content. The repository supplies design material; you still need to decide which choices belong in your product &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-design-existing-brand-system#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>BRANDKIT</category><category>claude-code</category><category>dev-tools</category></item><item><title>Review claude-mem prompt upload consent before setup</title><link>https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent</guid><description>Compare the reported historical upload behavior with the consent flow in the version you install.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A claude-mem issue reports that earlier setup versions uploaded recent coding-agent prompts without a separate consent step &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. The current setup source contains an explicit upload decision, so the historical report needs to be read alongside the code in the version you install &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-the-version-and-setup-changes&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-the-version-and-setup-changes&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the version and setup changes&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-version-and-setup-changes&quot; aria-label=&quot;Copy link to step 1: Check the version and setup changes&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Read the release notes and the issue&apos;s linked commits before running an installer &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. The report describes scans of multiple coding agents&apos; histories, not only the tool selected during installation &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Do not assume a newer file on the default branch is already present in the package you downloaded.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;inspect-the-upload-choice&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02inspect-the-upload-choice&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect the upload choice&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-the-upload-choice&quot; aria-label=&quot;Copy link to step 2: Inspect the upload choice&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The current &lt;code&gt;setup-scan.ts&lt;/code&gt; has an &lt;code&gt;awaiting-consent&lt;/code&gt; phase and a &lt;code&gt;confirmUpload&lt;/code&gt; method. Its comments say declining keeps prompts local &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Check that your installed setup presents that choice before authorizing access to histories.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Old chat histories can contain confidential project information. Review which tools and time range the setup will inspect before allowing an upload.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;handle-an-earlier-upload-separately&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03handle-an-earlier-upload-separately&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Handle an earlier upload separately&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;handle-an-earlier-upload-separately&quot; aria-label=&quot;Copy link to step 3: Handle an earlier upload separately&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The issue distinguishes deleting records at cmem.ai from deleting downstream copies &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-mem-prompt-upload-consent#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. If you already ran an affected setup, ask the service which recipients received your data and what deletion covers.&lt;/p&gt;
&lt;p&gt;Keep the installed version and the consent shown as evidence. A later consent fix cannot establish what happened to an earlier upload.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>security</category><category>claude-code</category></item><item><title>Audit a site with the Claude SEO plugin</title><link>https://fullbytedeveloper.com/blog/claude-seo-plugin-site-audit</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-seo-plugin-site-audit</guid><description>Install Claude SEO and run a scoped audit; its findings still need a human review.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Claude SEO adds site auditing commands to Claude Code, per its README. Start with a site you own or have permission to audit. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-seo-plugin-site-audit#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-the-public-plugin&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-the-public-plugin&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install the public plugin&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-the-public-plugin&quot; aria-label=&quot;Copy link to step 1: Install the public plugin&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Run these commands inside Claude Code, one at a time. The README specifies Claude Code 1.0.33 or newer. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-seo-plugin-site-audit#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add AgriciDaniel/claude-seo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install claude-seo@agricidaniel-claude-seo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/seo setup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The setup prepares the plugin&apos;s Python environment and browser. Check that setup with its diagnostic command. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-seo-plugin-site-audit#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/seo doctor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;choose-the-audit-scope&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02choose-the-audit-scope&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose the audit scope&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-the-audit-scope&quot; aria-label=&quot;Copy link to step 2: Choose the audit scope&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Replace the example address with your site&apos;s URL. Use the page command when you need to review one page first. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-seo-plugin-site-audit#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/seo page https://example.com/pricing&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For a whole-site review:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/seo audit https://example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The README describes a report with a prioritized action plan. Check each proposed change against your actual content and deployment before applying it. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-seo-plugin-site-audit#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Keep the report alongside the fixes so you can compare the next audit with this one.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>AUDIT</category><category>claude-code</category><category>dev-tools</category></item><item><title>Check what changed from Claude Max 20x to Ultra</title><link>https://fullbytedeveloper.com/blog/claude-ultra-plan-usage-change</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-ultra-plan-usage-change</guid><description>Review the renamed plan, verification conditions and current billing before changing subscriptions.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anthropic says Max 20x is now called Ultra, with existing Max 20x subscribers moved automatically at the same price &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-ultra-plan-usage-change#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. The name change is not a reason to buy a second subscription.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-your-current-subscription&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-your-current-subscription&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check your current subscription&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-your-current-subscription&quot; aria-label=&quot;Copy link to step 1: Check your current subscription&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Open your account&apos;s plan and billing settings. Compare the plan shown there with Anthropic&apos;s current Ultra help page. The page lists Ultra at USD 200 per month for a web subscription and says mobile pricing can differ &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-ultra-plan-usage-change#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;read-the-usage-conditions&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02read-the-usage-conditions&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Read the usage conditions&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;read-the-usage-conditions&quot; aria-label=&quot;Copy link to step 2: Read the usage conditions&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The help page describes weekly usage at ten times Pro and no five-hour limit for verified accounts. Check the verification condition before assuming every Ultra account receives the same limit behavior &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-ultra-plan-usage-change#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-billing-before-switching&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-billing-before-switching&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review billing before switching&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-billing-before-switching&quot; aria-label=&quot;Copy link to step 3: Review billing before switching&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The page describes different upgrade treatment for web and mobile subscriptions. Read the section for the store where you pay, including how unused annual Pro credit is handled &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-ultra-plan-usage-change#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Prices and plan rules can change. Use the account&apos;s displayed billing terms and the linked help page when deciding whether to change plans &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-ultra-plan-usage-change#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>cost-and-context</category><category>claude-code</category></item><item><title>Enable and inspect local Codex memories</title><link>https://fullbytedeveloper.com/blog/codex-local-memory-setup</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/codex-local-memory-setup</guid><description>Turn on local memory, control its use per chat, and check which memory store your client uses.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Codex can carry useful context from earlier chats into later work through local memory. The CODEXMEM post covered CLI 0.165.0, which introduced the v2 default for fresh profiles and imports from other agents &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/codex-local-memory-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;enable-local-memory&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01enable-local-memory&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Enable local memory&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;enable-local-memory&quot; aria-label=&quot;Copy link to step 1: Enable local memory&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Local Codex memories are off by default. Add this to &lt;code&gt;~/.codex/config.toml&lt;/code&gt;, merging it into an existing &lt;code&gt;[features]&lt;/code&gt; section if you already have one &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/codex-local-memory-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;toml&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;toml&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;[features]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;memories = true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;In an interactive chat, open the memory controls:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/memories&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Choose whether this chat can use existing memories and contribute to future ones. These controls apply to the chat; they do not replace the global setting &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/codex-local-memory-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-storage-location&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-the-storage-location&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the storage location&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-storage-location&quot; aria-label=&quot;Copy link to step 2: Check the storage location&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Fresh CLI profiles normally use &lt;code&gt;~/.codex/memories_v2/&lt;/code&gt;. An existing &lt;code&gt;memories/&lt;/code&gt; store continues to be used by default. Explicit version settings can change that behavior; the desktop app has migration behavior that can involve both directories &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/codex-local-memory-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Memory generation runs in the background and may wait after a chat becomes idle. Review generated files before sharing them. Keep required project rules in &lt;code&gt;AGENTS.md&lt;/code&gt; or checked-in documentation &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/codex-local-memory-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;other-changes-in-0-165-0&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03other-changes-in-01650&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Other changes in 0.165.0&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;other-changes-in-0-165-0&quot; aria-label=&quot;Copy link to step 3: Other changes in 0.165.0&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The October 27 release also added GPT-6.1 Terra to the model catalog, reasoning-effort changes during a conversation for supported models, and a repository filter for sessions across linked worktrees. It added the built-in Google Cloud Vertex AI provider configured with &lt;code&gt;model_provider = &quot;gcp&quot;&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/codex-local-memory-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Treat those as release-specific changes. Follow the current memory documentation when configuring a newer client, particularly if it already has a memory store.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>CODEXMEM</category><category>ai-agents</category><category>dev-tools</category></item><item><title>Check instruction files before starting a coding agent</title><link>https://fullbytedeveloper.com/blog/coding-agent-downloads-folder-check</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/coding-agent-downloads-folder-check</guid><description>Review downloaded instructions and agent endpoints before they can steer a coding session.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Forever Security reported finding malicious agent instructions in a customer&apos;s Downloads folder. The report describes attempts to redirect an agent&apos;s configuration and install malware &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/coding-agent-downloads-folder-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;choose-a-project-directory-you-control&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01choose-a-project-directory-you-control&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose a project directory you control&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-a-project-directory-you-control&quot; aria-label=&quot;Copy link to step 1: Choose a project directory you control&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The researchers recommend avoiding &lt;code&gt;~/Downloads&lt;/code&gt; as an agent&apos;s starting directory. Inspect unfamiliar &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;CLAUDE.md&lt;/code&gt; files before opening their folder with an agent &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/coding-agent-downloads-folder-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;AGENTS.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;CLAUDE.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Read for unexpected installation requests, credential handling or instructions to disable safeguards.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-configured-endpoints&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02review-configured-endpoints&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review configured endpoints&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-configured-endpoints&quot; aria-label=&quot;Copy link to step 2: Review configured endpoints&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The report names these configuration locations &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/coding-agent-downloads-folder-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;~/.codex/config.toml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.claude/settings.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Check Codex for unfamiliar MCP server entries or a changed &lt;code&gt;chatgpt_base_url&lt;/code&gt;. Check Claude Code for an unexpected &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; or proxy. Keep approvals and sandboxing enabled &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/coding-agent-downloads-folder-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;respond-to-evidence-of-compromise&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03respond-to-evidence-of-compromise&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Respond to evidence of compromise&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;respond-to-evidence-of-compromise&quot; aria-label=&quot;Copy link to step 3: Respond to evidence of compromise&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Forever recommends rotating exposed tokens if you discover the malicious configuration. It identifies &lt;code&gt;function-color&lt;/code&gt; as a malicious npm package in the campaign; finding it warrants treating the machine as compromised &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/coding-agent-downloads-folder-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Do not run unfamiliar package commands to investigate them.&lt;/p&gt;
&lt;p&gt;You have the instruction files and endpoint settings to review before the next agent session. For repository startup hooks, continue with &lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files&quot;&gt;the unfamiliar repository checklist&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>FOLDER</category><category>security</category><category>ai-agents</category></item><item><title>Compare six models and choose a coding client</title><link>https://fullbytedeveloper.com/blog/compare-models-and-coding-clients</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/compare-models-and-coding-clients</guid><description>Match the model to your task, then check whether its API or subscription works in your chosen client.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Choose a model around the work you need done, then choose a client that supports your account. These are the six models covered in the carousel, with links to their providers&apos; descriptions. The provider descriptions below can help you choose candidates for your own comparison. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;narrow-the-model-choices&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01narrow-the-model-choices&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Narrow the model choices&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;narrow-the-model-choices&quot; aria-label=&quot;Copy link to step 1: Narrow the model choices&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;GPT-6.1 Terra: OpenAI describes visual reasoning, computer use and everyday work. For GitHub&apos;s integration, see the &lt;a href=&quot;https://fullbytedeveloper.com/blog/use-terra-in-github-copilot&quot;&gt;Terra in Copilot guide&lt;/a&gt;. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Kimi K3.1 Pro: Kimi documents its model and API access, including &lt;code&gt;kimi-k3.1-pro&lt;/code&gt; and a high-speed variant. Check the provider&apos;s current availability before choosing a deployment path. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Gemini 4 Argon: Google&apos;s documentation positions it for software engineering, mathematical and scientific reasoning, and multi-step agents. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Claude Haiku 5.5: Anthropic describes high-volume work such as summaries, classification and database queries, plus coding subagent work. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Grok 4.7: Its announcement focuses on coding and knowledge work, including longer tasks and checking its own results. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;GLM-5.3-Flash: Z.ai describes visual feedback from interfaces and rendered output, alongside coding and document workflows. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the same representative task when comparing candidates. Record whether the result is correct, how much revision it needs, and its actual usage cost.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;separate-the-model-from-the-client&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02separate-the-model-from-the-client&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Separate the model from the client&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;separate-the-model-from-the-client&quot; aria-label=&quot;Copy link to step 2: Separate the model from the client&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;OpenCode connects multiple providers through its provider configuration. Its documented connection command is: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-7&quot; class=&quot;cite&quot; aria-label=&quot;Source 7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/connect&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Choose the provider and follow its authentication instructions. OpenCode&apos;s documentation explicitly says Claude Pro/Max authentication through third-party plugins is prohibited by Anthropic. Use the supported API connection for that provider. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-7&quot; class=&quot;cite&quot; aria-label=&quot;Source 7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;A subscription and an API key are different billing arrangements. Check the provider&apos;s current terms and prices before connecting an account; the carousel&apos;s October snapshot should not set a spending budget today. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-models-and-coding-clients#source-7&quot; class=&quot;cite&quot; aria-label=&quot;Source 7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>MODELS</category><category>dev-tools</category><category>ai-agents</category></item><item><title>Compare five alternatives for notes and team docs</title><link>https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces</guid><description>Choose a workspace by its storage, deployment and license requirements before moving your notes.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Docmost, Logseq, AppFlowy, AFFiNE and Outline have different storage and licensing choices &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;. A public repository alone does not tell you what a production deployment permits.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;decide-whether-you-need-a-local-notebook-or-a-server&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01decide-whether-you-need-a-local-notebook-or-a-server&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Decide whether you need a local notebook or a server&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;decide-whether-you-need-a-local-notebook-or-a-server&quot; aria-label=&quot;Copy link to step 1: Decide whether you need a local notebook or a server&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Check Logseq&apos;s release notes for the edition and storage model you intend to use &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. For a collaborative server, compare Docmost and AppFlowy Cloud&apos;s deployment requirements &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Start with a copy of your notes before attempting a migration.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;read-the-license-for-the-component-you-deploy&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02read-the-license-for-the-component-you-deploy&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Read the license for the component you deploy&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;read-the-license-for-the-component-you-deploy&quot; aria-label=&quot;Copy link to step 2: Read the license for the component you deploy&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;AFFiNE&apos;s server license separates Community Edition code from Enterprise Edition terms &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. Outline&apos;s license contains an additional-use grant and restrictions on production use &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;. Read the actual license for your version and deployment, especially if you plan to host it for other customers.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;try-one-documented-installation&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03try-one-documented-installation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Try one documented installation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;try-one-documented-installation&quot; aria-label=&quot;Copy link to step 3: Try one documented installation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Docmost recommends Docker and provides a deployment guide with configuration steps &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/compare-self-hosted-document-workspaces#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;. Follow the current guide rather than copying a partial compose command from a caption. Review its application URL, credentials and persistence settings before starting it.&lt;/p&gt;
&lt;p&gt;Check that you can export your notes and restore the stored data before moving the working copy. The software choice also leaves you responsible for the server, backups and updates.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>OPENDOCS</category><category>dev-tools</category></item><item><title>Connect Claude Code to five useful MCP tools</title><link>https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools</guid><description>Choose a server for repository work, browser checks, library docs, error reports or workspace notes.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;MCP lets Claude Code read and act on connected services. Add a server for a task you actually do, such as checking an issue or reading a browser page. The Claude Code documentation explains installation, scopes and authentication. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;choose-the-service-you-need&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01choose-the-service-you-need&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose the service you need&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-the-service-you-need&quot; aria-label=&quot;Copy link to step 1: Choose the service you need&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; work with repository files, issues and pull requests. Start with the official server&apos;s setup and tool permissions. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Playwright:&lt;/strong&gt; interact with a browser using page accessibility information. Check its browser setup and supported tools. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context7:&lt;/strong&gt; retrieve library documentation and code examples. Follow the current client installation instructions. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sentry:&lt;/strong&gt; investigate errors, performance and issue triage. Connect the organization or project you need. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notion:&lt;/strong&gt; find, read and update workspace information. Follow its hosted MCP connection and authorization guide. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;connect-one-server-first&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02connect-one-server-first&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Connect one server first&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;connect-one-server-first&quot; aria-label=&quot;Copy link to step 2: Connect one server first&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Sentry documents this Claude Code command. Replace the organization and project placeholders with your own slugs. Sentry recommends project scoping where possible. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; mcp&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --transport&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; http&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; sentry&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://mcp.sentry.dev/mcp/{organizationSlug}/{projectSlug}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Inside Claude Code, open the server panel: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/mcp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use it to inspect the connection and authenticate servers that require OAuth. Complete the browser sign-in before asking Claude to read the service. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-access-before-adding-more&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-access-before-adding-more&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check access before adding more&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-access-before-adding-more&quot; aria-label=&quot;Copy link to step 3: Check access before adding more&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Start with a read-only task, such as inspecting one issue. Review the returned item against the service itself before relying on it. Choose only the accounts and workspaces that the task needs.&lt;/p&gt;
&lt;p&gt;Follow each provider&apos;s setup instructions; a local browser server and a hosted account integration have different requirements. Keep server credentials out of shared configuration files. Claude Code&apos;s documentation covers project approval and configuration scopes. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/connect-five-claude-mcp-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>claude-code</category><category>mcp</category></item><item><title>Choose an effort level in Copilot Fusion</title><link>https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection</guid><description>Let Copilot select models per task, then inspect which models ran and how credits were used.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Copilot Fusion chooses models for each prompt. You select an effort level, and Copilot decides how to produce and review the response. GitHub made it generally available on October 28, 2026 &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;select-fusion-in-your-client&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01select-fusion-in-your-client&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Select Fusion in your client&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;select-fusion-in-your-client&quot; aria-label=&quot;Copy link to step 1: Select Fusion in your client&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Update VS Code, Copilot CLI, the Copilot app or your JetBrains client. Open the model picker, select Copilot Fusion, then choose Standard, High or Max &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Start with Standard for routine coding. High and Max are options for tasks that justify more reasoning and additional model calls. A useful first comparison is the same small bug fix at two effort levels: inspect the diff and run the same tests before comparing the credit use.&lt;/p&gt;
&lt;p&gt;GitHub says Fusion is available on all Copilot plans, but organization policies still control which models it can use. If every eligible model is disabled, Fusion will not appear &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;understand-what-ran&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02understand-what-ran&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Understand what ran&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;understand-what-ran&quot; aria-label=&quot;Copy link to step 2: Understand what ran&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Fusion can complete a request with one model, have a draft checked before escalating it, or have other models critique a draft before revision &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. The pattern can change between prompts in the same conversation.&lt;/p&gt;
&lt;p&gt;Hover over the effort label beneath the reply to see the models used &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. That gives you something concrete to compare when two requests take different amounts of time.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-credits-and-edits&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-credits-and-edits&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check credits and edits&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-credits-and-edits&quot; aria-label=&quot;Copy link to step 3: Check credits and edits&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;GitHub bills the models Fusion uses, with no separate Fusion charge. High and Max can consume more credits than Standard because more than one model may run. The current documentation lists a 30% model-cost discount for paid plans through November 30, 2026 &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Check the linked billing section before estimating costs after that date.&lt;/p&gt;
&lt;p&gt;One limitation deserves attention: discarding a draft does not automatically undo edits that draft made in your workspace &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-fusion-model-effort-selection#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Review the complete diff before committing, including files the final response does not mention.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>FUSION</category><category>github-copilot</category><category>cost-and-context</category></item><item><title>Run five website checks before your next release</title><link>https://fullbytedeveloper.com/blog/five-free-website-audit-tools</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/five-free-website-audit-tools</guid><description>Use Lighthouse, Unlighthouse, lychee, Lighthouse CI and web-vitals for different website checks.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A website needs several kinds of checks. Lighthouse audits a page, a link checker finds broken destinations, and browser measurements show what happens during visits. Our CRAWLKIT post collects five free tools for these jobs.&lt;/p&gt;
&lt;p&gt;Run scans on a site you own. Replace &lt;code&gt;https://example.com&lt;/code&gt; in the examples with your URL.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;start-with-one-page&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01start-with-one-page&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start with one page&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-with-one-page&quot; aria-label=&quot;Copy link to step 1: Start with one page&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Lighthouse can run just its SEO category &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-free-website-audit-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. This command gives you a focused report to work through before scanning more pages.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; lighthouse&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://example.com&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --only-categories=seo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Read each failed audit and check the affected element. A passing automated report does not prove that every page is indexed or that its content answers a visitor&apos;s question.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-across-the-site&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-across-the-site&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check across the site&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-across-the-site&quot; aria-label=&quot;Copy link to step 2: Check across the site&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Unlighthouse discovers pages and runs Lighthouse audits across them. Its current homepage documents the v1 beta command and requires Node.js 24.13.1 or later &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-free-website-audit-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; unlighthouse@beta&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --site&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This explicitly selects a beta release. Review the discovered URLs before treating the report as coverage of your whole site. Pages behind authentication or without discoverable links need separate attention.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;find-broken-links&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03find-broken-links&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Find broken links&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;find-broken-links&quot; aria-label=&quot;Copy link to step 3: Find broken links&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;lychee checks URLs in websites, Markdown and HTML. On macOS, its documented Homebrew installation is &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-free-website-audit-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; lychee&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;lychee&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Inspect failures before changing links. An unavailable destination or a server that blocks automated requests needs a different response from a typo in your own URL.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;repeat-audits-after-changes&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04repeat-audits-after-changes&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Repeat audits after changes&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;repeat-audits-after-changes&quot; aria-label=&quot;Copy link to step 4: Repeat audits after changes&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Lighthouse CI runs audits and can enforce assertions in a build process &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-free-website-audit-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. Its setup needs a configuration file describing what to collect and check.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -g&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; @lhci/cli&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Follow the linked getting-started guide to configure your site&apos;s build directory or URLs. Once that configuration exists, run:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;lhci&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; autorun&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Choose assertions that reflect the pages you are releasing, then compare results after changes. Installing the CLI alone does not add a check to your deployment pipeline.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;measure-visits-in-the-browser&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05measure-visits-in-the-browser&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Measure visits in the browser&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;measure-visits-in-the-browser&quot; aria-label=&quot;Copy link to step 5: Measure visits in the browser&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;web-vitals&lt;/code&gt; package measures Core Web Vitals in the browser &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-free-website-audit-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;. Install it in a project with a client-side build:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; web-vitals&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Start with the documented console example:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;ts&quot; data-block=&quot;7&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;ts&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;7&quot; aria-label=&quot;Copy code block 7&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; { onCLS, onINP, onLCP } &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &apos;web-vitals&apos;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;onCLS&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;(console.log);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;onINP&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;(console.log);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;onLCP&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;(console.log);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Some callbacks wait for interaction or a change in page visibility. This example only logs locally. Collecting measurements across visitors requires connecting the callbacks to an analytics endpoint &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-free-website-audit-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;keep-the-results-separate&quot; data-step=&quot;6&quot;&gt;&lt;h2 id=&quot;06keep-the-results-separate&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;06&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep the results separate&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-the-results-separate&quot; aria-label=&quot;Copy link to step 6: Keep the results separate&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Use the page audit to identify issues, the site scan to find repeated problems, and the link checker to find broken destinations. Add repeatable build checks once the configuration is useful. Browser measurements then help you see how released pages behave during actual visits.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>CRAWLKIT</category><category>dev-tools</category></item><item><title>Five tools for local AI work</title><link>https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools</guid><description>Try dictation, model inference, image upscaling, transcription and background removal on your computer.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;These tools cover five everyday jobs. Their documentation describes local processing options, but hardware support and setup differ. Start with the job you repeat most. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;dictate-with-handy&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01dictate-with-handy&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Dictate with Handy&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;dictate-with-handy&quot; aria-label=&quot;Copy link to step 1: Dictate with Handy&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Handy transcribes speech and pastes it into the app you are using. Its README describes local processing on Windows, macOS and Linux. Download the appropriate release, grant microphone and accessibility permissions, then configure a shortcut. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Use it for a short message first. Read the transcription before sending it.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;run-a-local-model-with-ollama&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02run-a-local-model-with-ollama&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Run a local model with Ollama&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;run-a-local-model-with-ollama&quot; aria-label=&quot;Copy link to step 2: Run a local model with Ollama&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Ollama supports local models and also offers cloud features. Its FAQ distinguishes the two: local processing keeps prompts on your machine, while a cloud model sends them to the service. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;For local-only operation, the documented setting in &lt;code&gt;~/.ollama/server.json&lt;/code&gt; is: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;json&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  &quot;disable_ollama_cloud&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Restart Ollama after changing it. Check model requirements against your available memory. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;enlarge-an-image-with-upscayl&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03enlarge-an-image-with-upscayl&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Enlarge an image with Upscayl&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;enlarge-an-image-with-upscayl&quot; aria-label=&quot;Copy link to step 3: Enlarge an image with Upscayl&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Upscayl provides a desktop image upscaler. Its README requires a Vulkan-compatible GPU and warns that many integrated GPUs will not work. It also says upscaling does not fix an out-of-focus photograph. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Keep the original and compare edges and small text in the result.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;transcribe-a-recording-with-buzz&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04transcribe-a-recording-with-buzz&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Transcribe a recording with Buzz&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;transcribe-a-recording-with-buzz&quot; aria-label=&quot;Copy link to step 4: Transcribe a recording with Buzz&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Buzz supports offline transcription and translation, audio and video files, and transcript exports including TXT, SRT and VTT. Install its desktop app using the linked repository instructions. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;SRT or VTT is useful when the next step is captions. Review names and technical terms before publishing.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;remove-a-background-with-rembg&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05remove-a-background-with-rembg&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Remove a background with rembg&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;remove-a-background-with-rembg&quot; aria-label=&quot;Copy link to step 5: Remove a background with rembg&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The rembg README documents Python 3.11 through 3.13 and this CPU installation with CLI support: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;pip&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;rembg[cpu,cli]&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Its single-image example is: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/five-local-ai-desktop-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;rembg&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; i&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; path/to/input.png&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; path/to/output.png&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Replace those paths with your input and output files. Inspect hair, glasses and soft edges before using the cutout.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>local-ai</category><category>dev-tools</category></item><item><title>Check GitHub Actions before merging workflows</title><link>https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks</guid><description>Check syntax, security and action pins before running a workflow with access to your repository.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;GitHub Actions workflows need checks before they receive repository access. The actionlint, zizmor, pinact, ratchet and act projects cover different parts of that review. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-syntax-and-security&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-syntax-and-security&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check syntax and security&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-syntax-and-security&quot; aria-label=&quot;Copy link to step 1: Check syntax and security&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Install actionlint and zizmor using their linked installation instructions. From your repository, actionlint checks workflow syntax and expressions; zizmor scans for security problems. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;actionlint&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;zizmor&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Read the reported file locations and fix each finding before running the workflow.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;pin-action-versions&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02pin-action-versions&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Pin action versions&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;pin-action-versions&quot; aria-label=&quot;Copy link to step 2: Pin action versions&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Per the pinact README, this command edits workflow and composite-action files to pin action references. Review its changes before committing them. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;pinact&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use ratchet to check those pins afterward. Its lint command exits unsuccessfully when it finds an unpinned reference. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;ratchet&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; lint&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; .github/workflows/*.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;list-the-jobs-before-a-local-run&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03list-the-jobs-before-a-local-run&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;List the jobs before a local run&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;list-the-jobs-before-a-local-run&quot; aria-label=&quot;Copy link to step 3: List the jobs before a local run&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The act documentation provides a list mode for a specific event. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;act&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -l&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; pull_request&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the jobs for that event. A full run requires a working container setup and the event inputs your workflow uses. Review the workflow before allowing it to run locally, where it can execute its commands. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/github-actions-five-workflow-checks#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Keep these checks in the pull-request review so a passing local run is one piece of evidence about the change.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>ACTIONGATE</category><category>security</category><category>dev-tools</category></item><item><title>Check what Google AI Overviews actually requires</title><link>https://fullbytedeveloper.com/blog/google-ai-overviews-search-requirements</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/google-ai-overviews-search-requirements</guid><description>Check indexing, snippets and visible content before adding files or markup for AI search.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Google says AI Overviews and AI Mode use the same search fundamentals as ordinary Google Search. There is no additional AI-specific file or schema requirement &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-ai-overviews-search-requirements#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-whether-google-can-index-the-page&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-whether-google-can-index-the-page&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check whether Google can index the page&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-whether-google-can-index-the-page&quot; aria-label=&quot;Copy link to step 1: Check whether Google can index the page&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Use Search Console&apos;s URL Inspection for the page you want people to find. Per Google&apos;s guide, a supporting page must be indexed and eligible to appear with a snippet &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-ai-overviews-search-requirements#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Review crawling restrictions, hosting restrictions and any &lt;code&gt;noindex&lt;/code&gt; instruction before changing the content.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;put-the-answer-in-visible-text&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02put-the-answer-in-visible-text&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Put the answer in visible text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;put-the-answer-in-visible-text&quot; aria-label=&quot;Copy link to step 2: Put the answer in visible text&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Google recommends making important content available as text and linking to it from other pages. Give the reader a direct answer, then the evidence they need to assess it. Structured data must agree with the visible page &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-ai-overviews-search-requirements#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-ordinary-search-report&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-the-ordinary-search-report&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the ordinary search report&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-ordinary-search-report&quot; aria-label=&quot;Copy link to step 3: Check the ordinary search report&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Google includes traffic from these AI features in Search Console&apos;s Web performance report. Use that report alongside the actions readers take on your site &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-ai-overviews-search-requirements#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Meeting the requirements does not guarantee crawling, indexing or inclusion. Fix an observed indexing or content problem before paying for an AI-search addition whose effect you cannot measure &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-ai-overviews-search-requirements#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>AIMYTH</category><category>dev-tools</category></item><item><title>Use Google&apos;s search guidance beyond the PageRank story</title><link>https://fullbytedeveloper.com/blog/google-search-pagerank-basics</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/google-search-pagerank-basics</guid><description>Read the early search paper, then check your page against current Google Search Essentials.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Brin and Page&apos;s 1998 paper describes a Google prototype that used hyperlink structure alongside page text. Its database covered at least 24 million pages. That historical design helps explain the interest in links, but it is not a checklist for ranking a page today. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-search-pagerank-basics#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-the-page-people-will-read&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-the-page-people-will-read&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the page people will read&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-page-people-will-read&quot; aria-label=&quot;Copy link to step 1: Check the page people will read&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Google&apos;s current Search Essentials recommends useful content, words people search for in titles and headings, and crawlable links. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-search-pagerank-basics#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt; Apply that to one page before changing your whole site:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Give it a title that names the question it answers.&lt;/li&gt;
&lt;li&gt;Put the answer near the start, with enough detail for someone to act.&lt;/li&gt;
&lt;li&gt;Link to it from a relevant page using descriptive link text.&lt;/li&gt;
&lt;li&gt;Check that images and videos follow Google&apos;s guidance for those formats.&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;avoid-manufactured-signals&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02avoid-manufactured-signals&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Avoid manufactured signals&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;avoid-manufactured-signals&quot; aria-label=&quot;Copy link to step 2: Avoid manufactured signals&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Google&apos;s spam policies cover keyword stuffing and links created to manipulate rankings. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-search-pagerank-basics#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt; Repeating a phrase or buying links does not improve the explanation your reader came for.&lt;/p&gt;
&lt;p&gt;I would spend that effort on an original example, a documented result or a clear comparison someone else can reference. Then check the page against Search Essentials again. Meeting its requirements makes content eligible; Google explicitly says it does not guarantee crawling, indexing or serving the page. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/google-search-pagerank-basics#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>SEO</category><category>dev-tools</category></item><item><title>Map a codebase with Graphify</title><link>https://fullbytedeveloper.com/blog/graphify-codebase-knowledge-graph</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/graphify-codebase-knowledge-graph</guid><description>Build a queryable graph of a repository and inspect the source behind its connections.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Graphify builds a graph of code and related documents that an assistant can query. Its repository says code parsing runs locally through tree-sitter; an optional semantic pass over documents or media can call a configured backend. Check that boundary before including private material. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/graphify-codebase-knowledge-graph#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-the-official-package&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-the-official-package&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install the official package&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-the-official-package&quot; aria-label=&quot;Copy link to step 1: Install the official package&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The documented requirements include Python 3.10 or later and uv or pipx. For uv, the package has two trailing y characters: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/graphify-codebase-knowledge-graph#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; tool&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; graphifyy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;graphify&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --project&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Run this from the repository you want to configure. The project option writes the assistant skill inside that repository. Review the generated files before committing them. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/graphify-codebase-knowledge-graph#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;build-and-inspect-the-graph&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02build-and-inspect-the-graph&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Build and inspect the graph&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;build-and-inspect-the-graph&quot; aria-label=&quot;Copy link to step 2: Build and inspect the graph&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;In Claude Code, use the documented skill command: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/graphify-codebase-knowledge-graph#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/graphify .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Look in &lt;code&gt;graphify-out/&lt;/code&gt; for &lt;code&gt;graph.html&lt;/code&gt;, &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt; and &lt;code&gt;graph.json&lt;/code&gt;. The HTML is the visual view; the JSON holds the graph. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/graphify-codebase-knowledge-graph#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Inspect a connection before relying on it. Graphify marks whether edges came directly from source or were inferred, and its query, path and explain commands expose the relationships. Use the linked source file to confirm the result before changing code. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/graphify-codebase-knowledge-graph#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>dev-tools</category><category>claude-code</category></item><item><title>Keep Hermes project context and memory useful</title><link>https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits</guid><description>Separate project rules from reusable procedures and check usage before compressing a long session.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hermes documents separate places for project instructions, persistent facts and reusable procedures &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Put information where the next session can find it.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;keep-project-rules-in-agents-md&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01keep-project-rules-in-agentsmd&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep project rules in AGENTS.md&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-project-rules-in-agents-md&quot; aria-label=&quot;Copy link to step 1: Keep project rules in AGENTS.md&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The tips guide says Hermes loads the project-root &lt;code&gt;AGENTS.md&lt;/code&gt; when a session starts. Put project conventions and architecture decisions there. It discovers subdirectory instruction files during relevant tool calls &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;save-facts-and-procedures-separately&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02save-facts-and-procedures-separately&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Save facts and procedures separately&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;save-facts-and-procedures-separately&quot; aria-label=&quot;Copy link to step 2: Save facts and procedures separately&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Use memory for durable facts, such as project locations or environment details. Use a skill for a repeatable procedure, per the Hermes guide &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Review remembered facts when the environment changes.&lt;/p&gt;
&lt;p&gt;The memory documentation describes files that persist between sessions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Avoid treating temporary task progress as a permanent preference.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;inspect-a-long-session-before-compressing-it&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03inspect-a-long-session-before-compressing-it&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect a long session before compressing it&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-a-long-session-before-compressing-it&quot; aria-label=&quot;Copy link to step 3: Inspect a long session before compressing it&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Hermes documents these interactive commands &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Check usage first, then compress when the accumulated conversation needs shortening.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/usage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/compress&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The guide describes compression as a summary of conversation history &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Keep important decisions in the project files too, so a later session does not depend on recovering every detail from that summary.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;discover-commands-instead-of-guessing-them&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04discover-commands-instead-of-guessing-them&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Discover commands instead of guessing them&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;discover-commands-instead-of-guessing-them&quot; aria-label=&quot;Copy link to step 4: Discover commands instead of guessing them&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Type &lt;code&gt;/&lt;/code&gt; and press Tab for the available commands and installed skills, as documented in the tips guide &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-agent-context-memory-habits#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Use the choices shown by your installed version.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>HERMESPRO</category><category>ai-agents</category><category>cost-and-context</category></item><item><title>Import Claude Code settings into Hermes</title><link>https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings</guid><description>Preview imported instructions and tools, then review permission rules and credentials that do not transfer.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hermes can import Claude Code instructions, skills and MCP settings, per its import guide. Preview the plan before writing changes. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-the-importer-and-preview-changes&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-the-importer-and-preview-changes&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install the importer and preview changes&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-the-importer-and-preview-changes&quot; aria-label=&quot;Copy link to step 1: Install the importer and preview changes&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The current guide installs the official plugin, then runs a dry preview. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; plugins&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; agent-importers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; import-agent&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; claude-code&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see a per-item plan. The guide says dry runs do not write to disk. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-permissions-before-importing&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02review-permissions-before-importing&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review permissions before importing&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-permissions-before-importing&quot; aria-label=&quot;Copy link to step 2: Review permissions before importing&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The importer maps Bash allow and deny rules, but reports non-Bash rules such as &lt;code&gt;Read(...)&lt;/code&gt; as unmapped. It skips slash commands and strips credentials. Rebuild missing protections before giving Hermes access to the project. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Hermes&apos; security guide says its file tools deny reads of project &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.env.local&lt;/code&gt;, &lt;code&gt;.env.production&lt;/code&gt; and &lt;code&gt;.envrc&lt;/code&gt; files, while allowing writes. That specific rule does not describe protection for every secret path. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;apply-the-import&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03apply-the-import&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Apply the import&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;apply-the-import&quot; aria-label=&quot;Copy link to step 3: Apply the import&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; import-agent&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; claude-code&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Review the report for skipped items. The same guide supports &lt;code&gt;codex&lt;/code&gt; and &lt;code&gt;cursor&lt;/code&gt; as source names. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;preview-later-updates&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04preview-later-updates&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Preview later updates&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;preview-later-updates&quot; aria-label=&quot;Copy link to step 4: Preview later updates&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; import-agent&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --sync&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;After reviewing the changes, apply them with:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; import-agent&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Imported setup changes can now be reviewed separately from the credentials you configure in Hermes. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-import-claude-code-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>HERMESMOVE</category><category>ai-agents</category><category>security</category></item><item><title>Inspect a binary with capa, Ghidra, YARA-X and ILSpy</title><link>https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools</guid><description>Choose an inspection tool for the file type and keep unknown binaries away from your working machine.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;capa, Ghidra, YARA-X and ILSpy answer different questions about a binary, per their repositories &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. Start with a file you own or are authorized to inspect.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;identify-the-file-before-choosing-the-tool&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01identify-the-file-before-choosing-the-tool&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Identify the file before choosing the tool&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;identify-the-file-before-choosing-the-tool&quot; aria-label=&quot;Copy link to step 1: Identify the file before choosing the tool&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Use capa to identify capabilities represented by its rules &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Ghidra supplies a reverse-engineering framework for inspecting compiled code &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. YARA-X matches patterns expressed as rules &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. ILSpy is a decompiler for .NET assemblies &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;A .NET assembly is a good reason to try ILSpy first. A native executable may require a different tool. Read the supported formats in each project&apos;s documentation before downloading it.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;use-an-isolated-inspection-environment&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02use-an-isolated-inspection-environment&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Use an isolated inspection environment&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;use-an-isolated-inspection-environment&quot; aria-label=&quot;Copy link to step 2: Use an isolated inspection environment&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; An unfamiliar binary may be malicious. Keep it off your ordinary work machine and do not run it merely to find out what it does.&lt;/p&gt;
&lt;p&gt;Download the tool from the repository&apos;s release links. Follow the runtime requirements for that release, particularly Ghidra&apos;s Java requirements &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Keep the original file unchanged and inspect a copy.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;treat-the-findings-as-leads&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03treat-the-findings-as-leads&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Treat the findings as leads&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;treat-the-findings-as-leads&quot; aria-label=&quot;Copy link to step 3: Treat the findings as leads&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;capa documents limits for packed and obfuscated files &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/inspect-binaries-with-four-tools#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;. A rule match identifies a pattern to investigate; an empty result cannot establish that a file is harmless.&lt;/p&gt;
&lt;p&gt;Record the file, tool version and relevant findings. That gives the next reviewer enough information to repeat the inspection without relying on a screenshot alone.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>BINLOOK</category><category>security</category><category>dev-tools</category></item><item><title>Check PHP deployments for the October security fixes</title><link>https://fullbytedeveloper.com/blog/php-critical-security-update-check</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/php-critical-security-update-check</guid><description>Check the web runtime and vendor patches; the command-line PHP version may belong to another installation.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The PHP team says CVE-2026-109618 and CVE-2026-109619 can allow unauthenticated remote code execution. Its advisory covers PHP installations serving web requests, with the highest stated risk for Apache mod_php. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/php-critical-security-update-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;read-the-command-line-version&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01read-the-command-line-version&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Read the command-line version&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;read-the-command-line-version&quot; aria-label=&quot;Copy link to step 1: Read the command-line version&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The PHP manual documents the version option. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/php-critical-security-update-check#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -v&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the version of the PHP executable on your command path. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/php-critical-security-update-check#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt; Check your hosting panel or service configuration separately to identify the web runtime.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;compare-the-deployment-with-its-vendor-notice&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02compare-the-deployment-with-its-vendor-notice&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Compare the deployment with its vendor notice&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;compare-the-deployment-with-its-vendor-notice&quot; aria-label=&quot;Copy link to step 2: Compare the deployment with its vendor notice&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The upstream fixes are in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. Distribution vendors may backport fixes without using those version numbers. The PHP team directs those users to their vendor&apos;s updated packages. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/php-critical-security-update-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; replacing a runtime can affect application compatibility. Follow your vendor&apos;s update procedure and check your application before resuming normal traffic.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-the-follow-up-advisory&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-the-follow-up-advisory&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review the follow-up advisory&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-the-follow-up-advisory&quot; aria-label=&quot;Copy link to step 3: Review the follow-up advisory&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The October 23 notice recommends disabling session upload progress for an unusual serialization-handler combination until its fix. Read that notice against your configuration, even after applying the October 21 updates. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/php-critical-security-update-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Record the package installed and the web service running it, so the next check compares the deployment that actually serves requests.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>security</category><category>dev-tools</category></item><item><title>Give Claude a reusable design system</title><link>https://fullbytedeveloper.com/blog/prepare-claude-design-system-pack</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/prepare-claude-design-system-pack</guid><description>Start with a reviewed design reference, import its rules and check one generated page before reusing it.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A design system gives Claude reusable colors, typography, components and layout patterns, per Anthropic&apos;s setup guide. Open Design Agent Kit is a community repository of design systems, skills and examples that can provide starting material. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/prepare-claude-design-system-pack#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/prepare-claude-design-system-pack#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;review-one-reference-first&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01review-one-reference-first&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review one reference first&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-one-reference-first&quot; aria-label=&quot;Copy link to step 1: Review one reference first&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Browse the kit&apos;s design systems and read the selected files before using them. The repository is MIT-licensed, but it is a third-party project. Treat a brand-inspired example as reference material and adapt it to your own product. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/prepare-claude-design-system-pack#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Choose the typography, spacing and component rules you want to retain. Avoid combining several unrelated visual systems in one generation request.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;use-the-current-import-path&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02use-the-current-import-path&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Use the current import path&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;use-the-current-import-path&quot; aria-label=&quot;Copy link to step 2: Use the current import path&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic&apos;s current guide describes creating a design system from a chat using uploaded assets, connected apps, Figma files, decks, logos and fonts. For a React component system, it documents this Claude Code command: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/prepare-claude-design-system-pack#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/design-sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The command reads existing tokens and components. Check the guide&apos;s plan and organization requirements before starting. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/prepare-claude-design-system-pack#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The carousel showed the older standalone Claude Design setup screens. Use the current help guide for the interface in your account. If you have an existing standalone design system, the guide also describes moving it into the Claude app. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/prepare-claude-design-system-pack#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-a-small-generated-page&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-a-small-generated-page&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check a small generated page&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-a-small-generated-page&quot; aria-label=&quot;Copy link to step 3: Check a small generated page&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Generate one page and compare its type, colors, spacing and components with the source. Check narrow and wide screens before using the system across a site.&lt;/p&gt;
&lt;p&gt;For the original post, I reached the setup page but did not run generation. That walkthrough is not evidence that the kit imports or renders correctly in every account. Keep the first trial small enough to inspect.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>DSPACK</category><category>claude-code</category><category>dev-tools</category></item><item><title>Keep coding agents away from production data</title><link>https://fullbytedeveloper.com/blog/protect-agent-production-database</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/protect-agent-production-database</guid><description>A database deletion at Replit shows why recovery and production access need separate checks.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Replit acknowledged that its agent deleted data from Jason Lemkin&apos;s application database. Its July 2025 account says he restored the database through Rollback, despite the agent failing to explain that recovery option. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/protect-agent-production-database#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The same account says development changes could affect production before Replit introduced separate databases by default. That is the part I would check in any agent setup. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/protect-agent-production-database#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-access-before-the-next-task&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-access-before-the-next-task&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check access before the next task&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-access-before-the-next-task&quot; aria-label=&quot;Copy link to step 1: Check access before the next task&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Use this checklist before handing an agent database work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give it development credentials. Check which database those credentials actually reach.&lt;/li&gt;
&lt;li&gt;Remove production write access from the agent&apos;s environment.&lt;/li&gt;
&lt;li&gt;Enforce a freeze through permissions and deployment approvals. A sentence in a conversation does not revoke credentials.&lt;/li&gt;
&lt;li&gt;Review the proposed database changes before deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are checks I recommend for your setup, not a claim that every agent platform enforces them automatically.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;rehearse-recovery&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02rehearse-recovery&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Rehearse recovery&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;rehearse-recovery&quot; aria-label=&quot;Copy link to step 2: Rehearse recovery&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Replit documents checkpoints and rollback in its incident account. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/protect-agent-production-database#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; Before you need recovery, find your provider&apos;s restore instructions and restore a backup into an isolated environment. Check that the expected records are present and the application can read them.&lt;/p&gt;
&lt;p&gt;Write down who can restore production and where that procedure lives. The incident shows why asking the agent itself may be insufficient. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/protect-agent-production-database#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>BACKUP</category><category>security</category><category>ai-agents</category></item><item><title>Update Python tooling after the eMudhra certificate incident</title><link>https://fullbytedeveloper.com/blog/python-emudhra-certificate-update</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/python-emudhra-certificate-update</guid><description>Update pip and certificate bundles in each environment; an operating-system update alone is insufficient.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Older pip installations can still trust the affected eMudhra certificates after an operating-system update. The Python security team explains that pip also loads its bundled certifi store. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/python-emudhra-certificate-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;update-pip-in-each-environment&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01update-pip-in-each-environment&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Update pip in each environment&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;update-pip-in-each-environment&quot; aria-label=&quot;Copy link to step 1: Update pip in each environment&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Activate each existing virtual environment. The advisory supplies this wheel URL and checksum to bootstrap a fixed pip installation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/python-emudhra-certificate-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;python&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -m&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; pip&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;pip @ https://files.pythonhosted.org/packages/3f/06/3e4420302363fbb71be3c7f35ce042f54bfca330e3e66b3a2e3c4cca579f/pip-26.2.2-py3-none-any.whl#sha256=fd7f4dfa8190e014013b9f08f3e973f4e4c26ffd179a204895533a7254813a70&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-current-advisory-before-rebuilding&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-the-current-advisory-before-rebuilding&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the current advisory before rebuilding&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-current-advisory-before-rebuilding&quot; aria-label=&quot;Copy link to step 2: Check the current advisory before rebuilding&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The advisory now recommends at least certifi 2026.10.19, pip 26.2.2 and uv 0.13.6. It also lists updated Python releases, including 3.15.2, 3.14.10 and 3.13.18. These recommendations supersede the older versions in the video. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/python-emudhra-certificate-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Rebuild container images with layer caching disabled so the system certificate packages are refreshed. Review the advisory&apos;s separate instructions for macOS framework installations and other packaging tools you use. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/python-emudhra-certificate-update#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Updating one environment leaves the others untouched. Keep the advisory beside your environment list until every installation and rebuilt image has been covered.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>security</category><category>dev-tools</category></item><item><title>Read the original ELIZA behind the chatbot story</title><link>https://fullbytedeveloper.com/blog/read-original-eliza-chatbot</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/read-original-eliza-chatbot</guid><description>Explore the recovered ELIZA code and separate its interpreter from the DOCTOR conversation script.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;ELIZA is easier to understand when you separate the conversation script from the program that runs it. The ELIZAGEN archive explains that Joseph Weizenbaum&apos;s original program interpreted scripts, with DOCTOR providing the familiar therapist-style conversation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/read-original-eliza-chatbot#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;start-with-the-recovered-source&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01start-with-the-recovered-source&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start with the recovered source&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-with-the-recovered-source&quot; aria-label=&quot;Copy link to step 1: Start with the recovered source&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;ELIZAGEN documents the recovery of the original code from Weizenbaum&apos;s papers at MIT. It was written in MAD-SLIP, rather than Lisp. The archive provides the code, a transcription and an annotated version, with permission from Weizenbaum&apos;s estate. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/read-original-eliza-chatbot#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Start with the annotated version linked from that page. Compare the interpreter with the separate DOCTOR script. This gives you something concrete to inspect when a reply seems surprisingly personal.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;read-the-paper-with-that-distinction&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02read-the-paper-with-that-distinction&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Read the paper with that distinction&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;read-the-paper-with-that-distinction&quot; aria-label=&quot;Copy link to step 2: Read the paper with that distinction&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Weizenbaum&apos;s 1966 paper included the DOCTOR script and described the algorithm. It did not publish the original interpreter. Later implementations can therefore differ from the recovered code. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/read-original-eliza-chatbot#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;When trying an ELIZA demonstration, check which implementation it uses. Record a short exchange, then look for the rule or script entry responsible for the reply. I find that a more useful exercise than judging the program from one convincing sentence.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>ELIZA</category><category>ai-agents</category></item><item><title>Review an agent design before writing the code</title><link>https://fullbytedeveloper.com/blog/review-agent-design-before-implementation</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/review-agent-design-before-implementation</guid><description>Use EGM to draft a specification and have fresh reviewers question its assumptions.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Google&apos;s Elephant Goldfish Model plugin drafts a specification with an agent that knows your project, then asks fresh reviewers to examine it without the earlier conversation &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-agent-design-before-implementation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. It is intended for work that needs design decisions.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-the-complete-plugin&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-the-complete-plugin&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install the complete plugin&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-the-complete-plugin&quot; aria-label=&quot;Copy link to step 1: Install the complete plugin&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The repository documents these terminal commands for Claude Code &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-agent-design-before-implementation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; marketplace&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; google/elephant-goldfish-model&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; egm@egm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Start a new session after installing. The workflow needs an agent that can create fresh subagents &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-agent-design-before-implementation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;discuss-the-design-before-implementation&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02discuss-the-design-before-implementation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Discuss the design before implementation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;discuss-the-design-before-implementation&quot; aria-label=&quot;Copy link to step 2: Discuss the design before implementation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Choose a feature with unresolved behavior, such as webhook retries. Use the repository&apos;s brainstorm command, with the documented Claude Code prefix &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-agent-design-before-implementation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/egm:egm-brainstorm Add webhook delivery to this project.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The agent saves the agreed direction in &lt;code&gt;concepts_brief.md&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-agent-design-before-implementation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;draft-and-review-the-specification&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03draft-and-review-the-specification&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Draft and review the specification&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;draft-and-review-the-specification&quot; aria-label=&quot;Copy link to step 3: Draft and review the specification&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Continue with the documented draft command &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-agent-design-before-implementation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/egm:egm-draft&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Then review the draft path returned by the agent. The README uses this example &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-agent-design-before-implementation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/egm:egm-review design_draft.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Choose which findings to address and approve the design before implementation. You keep responsibility for the architectural trade-offs &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-agent-design-before-implementation#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>ai-agents</category><category>claude-code</category></item><item><title>Check your TV before running a cleanup agent</title><link>https://fullbytedeveloper.com/blog/review-tv-cleanup-before-changes</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/review-tv-cleanup-before-changes</guid><description>Identify the operating system and preserve a restore path before disabling TV packages.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;CleanYourTV&apos;s agent workflow targets Android TV and Google TV. Its repository directs owners of Samsung, LG, Roku, Vizio and Hisense VIDAA televisions to separate settings instructions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-tv-cleanup-before-changes#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Start with the operating system your exact model runs.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;choose-the-instructions-for-your-model&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01choose-the-instructions-for-your-model&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose the instructions for your model&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-the-instructions-for-your-model&quot; aria-label=&quot;Copy link to step 1: Choose the instructions for your model&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Check the TV&apos;s settings and model information. For a non-Android model, use the project&apos;s &lt;a href=&quot;https://cleanyour.tv/not-android&quot;&gt;platform-specific privacy settings guide&lt;/a&gt;. It describes changes made with the remote, without installing the Android cleanup tool &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-tv-cleanup-before-changes#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;preserve-the-restore-information&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02preserve-the-restore-information&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Preserve the restore information&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;preserve-the-restore-information&quot; aria-label=&quot;Copy link to step 2: Preserve the restore information&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;For supported Android televisions, the repository&apos;s workflow backs up installed packages and settings before changes. It uses Android debugging and asks the owner to authorize the computer &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-tv-cleanup-before-changes#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Disabling TV packages can remove behavior you use. Review the proposed package list and the documented restore procedure before approving changes &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-tv-cleanup-before-changes#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;disable-only-what-you-have-reviewed&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03disable-only-what-you-have-reviewed&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Disable only what you have reviewed&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;disable-only-what-you-have-reviewed&quot; aria-label=&quot;Copy link to step 3: Disable only what you have reviewed&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The repository describes disabling packages with &lt;code&gt;pm disable-user&lt;/code&gt;, rather than uninstalling them, and keeping a restore script &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/review-tv-cleanup-before-changes#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Follow its current instructions for your model; a command list from another brand is not evidence that the same packages are safe to disable.&lt;/p&gt;
&lt;p&gt;Keep the backup and restore instructions somewhere you can reach without the TV. Check the remote, inputs and apps you actually use before treating the cleanup as finished.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>TVCLEAN</category><category>security</category><category>dev-tools</category></item><item><title>Choose alternatives for five developer tools</title><link>https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives</guid><description>Compare Bruno, Supabase, Coolify, Penpot and Plane before taking on their installation and upkeep.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Choose a replacement around the job you need: API testing, a backend, deployment, design or issue tracking. The projects below document different requirements and operating costs. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;run-api-collections-with-bruno&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01run-api-collections-with-bruno&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Run API collections with Bruno&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;run-api-collections-with-bruno&quot; aria-label=&quot;Copy link to step 1: Run API collections with Bruno&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Bruno&apos;s CLI runs collections, folders and individual requests. After installing its CLI and opening a collection directory, the documented command is: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;bru&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use a test environment when requests can modify data.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;plan-a-supabase-installation&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02plan-a-supabase-installation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Plan a Supabase installation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;plan-a-supabase-installation&quot; aria-label=&quot;Copy link to step 2: Plan a Supabase installation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The Supabase guide has an automated Linux setup and a manual Docker setup. The automated path installs prerequisites and asks for your service URLs. Review its secrets, HTTPS and update instructions before exposing an instance. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-a-server-for-coolify&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-a-server-for-coolify&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check a server for Coolify&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-a-server-for-coolify&quot; aria-label=&quot;Copy link to step 3: Check a server for Coolify&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Coolify documents a minimum of 2 CPU cores, 2 GB RAM and 10 GB disk space for its own instance. Check the linked requirements against the applications you plan to host as well. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;start-a-penpot-instance&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04start-a-penpot-instance&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start a Penpot instance&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-a-penpot-instance&quot; aria-label=&quot;Copy link to step 4: Start a Penpot instance&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;With Docker and Compose installed, the Penpot guide provides these commands. Download and review the Compose file first. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; docker-compose.yaml&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://raw.githubusercontent.com/penpot/penpot/main/docker/images/docker-compose.yaml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Then start the services:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; penpot&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; docker-compose.yaml&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; up&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see Penpot at &lt;code&gt;localhost:9001&lt;/code&gt;. Follow its backup and HTTPS instructions before using it for production work. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;select-plane-s-intended-edition&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05select-planes-intended-edition&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Select Plane&apos;s intended edition&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;select-plane-s-intended-edition&quot; aria-label=&quot;Copy link to step 5: Select Plane&amp;#x27;s intended edition&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Plane&apos;s main Docker guide starts with Commercial Edition. Its separate Community Edition section downloads a different setup script. Follow that section if you want Community Edition; do not assume the first installer selects it. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-developer-app-alternatives#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Before moving real projects, check how you will export data and restore a backup from each tool you choose.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>DEVSWAP</category><category>dev-tools</category></item><item><title>Choose tools for five marketing jobs</title><link>https://fullbytedeveloper.com/blog/self-host-marketing-tool-options</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/self-host-marketing-tool-options</guid><description>Compare self-hosted newsletter, analytics, link, survey and scheduling tools with their setup requirements.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Self-hosting marketing software puts its setup and maintenance on your server. Start with one job and its documented requirements before moving the rest of your workflow. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;start-a-newsletter-with-listmonk&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01start-a-newsletter-with-listmonk&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start a newsletter with listmonk&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-a-newsletter-with-listmonk&quot; aria-label=&quot;Copy link to step 1: Start a newsletter with listmonk&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The listmonk docs require PostgreSQL and provide a Compose file. Download it into a dedicated folder and customize the configuration before starting it. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -LO&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://github.com/knadh/listmonk/raw/master/docker-compose.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;After reviewing that file:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; up&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the admin setup at &lt;code&gt;localhost:9000&lt;/code&gt;, per the installation guide. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;choose-an-umami-installation&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02choose-an-umami-installation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose an Umami installation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-an-umami-installation&quot; aria-label=&quot;Copy link to step 2: Choose an Umami installation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Umami documents source, Docker Compose and prebuilt-image options. Its source installation needs a PostgreSQL connection in &lt;code&gt;DATABASE_URL&lt;/code&gt;. Change the initial admin password after the first login. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;configure-a-short-domain-for-shlink&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03configure-a-short-domain-for-shlink&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Configure a short domain for Shlink&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;configure-a-short-domain-for-shlink&quot; aria-label=&quot;Copy link to step 3: Configure a short domain for Shlink&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Shlink&apos;s Docker guide requires your short domain, an HTTPS setting and a GeoLite2 licence key. Read its database and persistence options before deploying the example container. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;prepare-an-ubuntu-server-for-formbricks&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04prepare-an-ubuntu-server-for-formbricks&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Prepare an Ubuntu server for Formbricks&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;prepare-an-ubuntu-server-for-formbricks&quot; aria-label=&quot;Copy link to step 4: Prepare an Ubuntu server for Formbricks&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The Formbricks setup guide targets Ubuntu and installs its dependencies, including Docker and PostgreSQL. Use the linked guide to check the server requirements before running its installer. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;configure-postiz-before-starting-it&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05configure-postiz-before-starting-it&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Configure Postiz before starting it&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;configure-postiz-before-starting-it&quot; aria-label=&quot;Copy link to step 5: Configure Postiz before starting it&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The Postiz docs begin with this repository. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; clone&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://github.com/gitroomhq/postiz-docker-compose&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Open the cloned folder, configure the Compose variables, then run the documented start command from that folder. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the frontend at &lt;code&gt;localhost:4007&lt;/code&gt; unless you changed that setting. Configure the required social-platform apps before trying to schedule posts. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/self-host-marketing-tool-options#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>GROWSTACK</category><category>dev-tools</category></item><item><title>Understand what MCP connects</title><link>https://fullbytedeveloper.com/blog/understand-mcp-tools-protocol</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/understand-mcp-tools-protocol</guid><description>Trace MCP from its launch to its host, client and server model before connecting another tool.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;MCP gives AI applications and external systems a common way to communicate. Anthropic introduced the Model Context Protocol on November 25, 2024, to reduce the custom integrations needed for each data source. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/understand-mcp-tools-protocol#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;On December 9, 2025, Anthropic announced its donation to the Agentic AI Foundation, a Linux Foundation fund co-founded with Block and OpenAI. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/understand-mcp-tools-protocol#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;follow-one-connection&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01follow-one-connection&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Follow one connection&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;follow-one-connection&quot; aria-label=&quot;Copy link to step 1: Follow one connection&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The protocol&apos;s architecture uses three participants. The host is your AI application. It creates an MCP client to connect to a server, which exposes capabilities such as tools and resources. A host can maintain several of these client connections. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/understand-mcp-tools-protocol#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;For example, a database server can expose a query tool and a resource describing the schema. MCP defines how the application discovers and calls those capabilities. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/understand-mcp-tools-protocol#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-server-before-enabling-it&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-the-server-before-enabling-it&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the server before enabling it&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-server-before-enabling-it&quot; aria-label=&quot;Copy link to step 2: Check the server before enabling it&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;I would check who operates the server, what credentials it needs and which actions it exposes. Give a read-only task read-only access where the service supports that restriction. A common protocol does not establish that a particular server deserves your credentials.&lt;/p&gt;
&lt;p&gt;The architecture documentation also distinguishes local STDIO connections from remote Streamable HTTP connections. Check which transport your application supports before copying a server configuration. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/understand-mcp-tools-protocol#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>MCP</category><category>mcp</category><category>ai-agents</category></item><item><title>Read startup files before opening an unfamiliar repository</title><link>https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files</guid><description>Inspect hooks and editor startup configuration before a cloned repository can execute commands.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;JFrog reported 42 compromised third-party repositories containing execution hooks for coding assistants and editors &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Read the startup configuration before trusting a repository in your tools.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;inspect-the-files-from-the-post&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01inspect-the-files-from-the-post&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect the files from the post&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-the-files-from-the-post&quot; aria-label=&quot;Copy link to step 1: Inspect the files from the post&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;JFrog&apos;s investigation names these paths among the campaign&apos;s execution points &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.claude/settings.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.cursor/mcp.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.vscode/tasks.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.gemini/settings.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.github/init.js&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Look for startup commands, unfamiliar servers and scripts they invoke. This is a starting list: JFrog also names other locations, including Cursor rules, Makefiles and &lt;code&gt;composer.json&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;disable-claude-code-hooks-for-inspection&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02disable-claude-code-hooks-for-inspection&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Disable Claude Code hooks for inspection&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;disable-claude-code-hooks-for-inspection&quot; aria-label=&quot;Copy link to step 2: Disable Claude Code hooks for inspection&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code documents this one-run setting, which takes precedence over project and local settings &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --settings&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &apos;{&quot;disableAllHooks&quot;: true}&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Managed hooks controlled by an administrator are an exception. This setting also does not disable other editors&apos; tasks or MCP servers &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;In a trusted Claude Code session, the hook menu shows configured hooks and their source &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/hooks&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;preserve-evidence-if-you-find-the-campaign&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03preserve-evidence-if-you-find-the-campaign&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Preserve evidence if you find the campaign&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;preserve-evidence-if-you-find-the-campaign&quot; aria-label=&quot;Copy link to step 3: Preserve evidence if you find the campaign&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; JFrog reports a token-revocation wiper. Its response guidance says to remove &lt;code&gt;net-health-checker&lt;/code&gt; and &lt;code&gt;pkg-runtime&lt;/code&gt; persistence before revoking the stolen GitHub token &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Follow the incident-specific sequence with your security responder; do not run the suspect files.&lt;/p&gt;
&lt;p&gt;The same report recommends preserving commit, workflow and artifact metadata before cleanup &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/unfamiliar-repository-startup-files#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Your review should cover both the visible startup file and the code it launches.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>OPENSAFE</category><category>security</category><category>claude-code</category></item><item><title>Check the MCP reference server security release</title><link>https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages</guid><description>Check package versions explicitly after the versioning change, and read the remaining Windows filesystem limitation.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The MCP reference servers&apos; v2.1.0 release includes security fixes for Filesystem, Everything and Fetch. The repository release number differs from each published package version. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-the-installed-packages&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-the-installed-packages&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the installed packages&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-installed-packages&quot; aria-label=&quot;Copy link to step 1: Check the installed packages&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;That release lists these patched packages: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@modelcontextprotocol/server-filesystem&lt;/code&gt;: &lt;code&gt;2.0.1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@modelcontextprotocol/server-everything&lt;/code&gt;: &lt;code&gt;2.0.1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp-server-fetch&lt;/code&gt;: &lt;code&gt;2026.10.24&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The TypeScript packages changed from date versions to semantic versions. Package managers sort &lt;code&gt;2.0.1&lt;/code&gt; below a &lt;code&gt;2026.x&lt;/code&gt; version, so an ordinary upgrade check can miss the fix. The release gives this explicit installation example: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; @modelcontextprotocol/server-filesystem@2.0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;These are the versions in that security release, not a claim that they will remain the newest. Check subsequent releases before changing an existing installation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-what-changed&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02review-what-changed&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review what changed&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-what-changed&quot; aria-label=&quot;Copy link to step 2: Review what changed&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The release fixes filesystem path handling, HTTP request handling in Everything, and Fetch checks involving internal addresses and redirected robots.txt requests. Read its linked advisories for the affected paths. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-windows-limitation&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-the-windows-limitation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the Windows limitation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-windows-limitation&quot; aria-label=&quot;Copy link to step 3: Check the Windows limitation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The filesystem advisory says version 2.0.1 anchors writes to the validated directory on Linux and macOS. On Windows, a concurrently replaced directory junction can still redirect certain writes outside the allowed folders. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The advisory recommends avoiding allowed directories that another user or an untrusted local process can write to on Windows. Do not treat a package update as removal of that documented limitation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/update-mcp-reference-server-packages#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;After updating, review the package referenced by your client&apos;s actual launch configuration and restart the client. A separate package installation does not prove an existing process is running the new version.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>MCPFIX</category><category>mcp</category><category>security</category></item><item><title>Use GPT-6.1 Terra in GitHub Copilot</title><link>https://fullbytedeveloper.com/blog/use-terra-in-github-copilot</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/use-terra-in-github-copilot</guid><description>Find Terra in Copilot, check organization access and compare its default token rates before choosing it.</description><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;GitHub announced GPT-6.1 Terra in Copilot on October 26, 2026, describing it as an option for everyday coding and terminal tasks. Availability covers Pro, Pro+, Max, Business and Enterprise plans. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/use-terra-in-github-copilot#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;select-the-model&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01select-the-model&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Select the model&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;select-the-model&quot; aria-label=&quot;Copy link to step 1: Select the model&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Open your Copilot model picker and look for GPT-6.1 Terra. GitHub lists VS Code, Visual Studio, Copilot CLI and other supported surfaces. The announcement says rollout is gradual. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/use-terra-in-github-copilot#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;If your organization manages Copilot, check its model policy. Business and Enterprise administrators control model access in Copilot settings. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/use-terra-in-github-copilot#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;read-the-full-token-rate&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02read-the-full-token-rate&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Read the full token rate&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;read-the-full-token-rate&quot; aria-label=&quot;Copy link to step 2: Read the full token rate&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;On November 5, 2026, GitHub&apos;s default-tier rates per million tokens are: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/use-terra-in-github-copilot#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPT-6.1 Terra: $1 input and $5 output.&lt;/li&gt;
&lt;li&gt;GPT-6.1 Sol: $2 input and $10 output.&lt;/li&gt;
&lt;li&gt;GPT-6 Astra: $10 input and $50 output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These figures exclude cache read and cache write rates. Long-context tiers also differ. GitHub converts token usage to AI credits at $0.01 per credit; check the linked table before estimating a job. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/use-terra-in-github-copilot#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;compare-it-on-a-scoped-task&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03compare-it-on-a-scoped-task&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Compare it on a scoped task&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;compare-it-on-a-scoped-task&quot; aria-label=&quot;Copy link to step 3: Compare it on a scoped task&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;OpenAI positions Terra around speed, cost and computer-based work. Treat those as the provider&apos;s description, then try a small task with clear acceptance criteria in your own repository. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/use-terra-in-github-copilot#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Review the diff and run the project&apos;s checks before accepting the result. Compare correctness and total usage on the same task if you try another model.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>TERRA</category><category>github-copilot</category><category>cost-and-context</category></item><item><title>Check the affected Claude Code extension in Cursor</title><link>https://fullbytedeveloper.com/blog/cursor-claude-extension-security-check</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/cursor-claude-extension-security-check</guid><description>Use Cursor&apos;s incident checks and remediation guidance; removing the extension alone may leave persistence.</description><pubDate>Sun, 01 Nov 2026 03:16:16 GMT</pubDate><content:encoded>&lt;p&gt;Cursor&apos;s notice, updated 2026-10-30, identifies malicious marketplace builds of &lt;code&gt;Anthropic.claude-code&lt;/code&gt; 2.1.312 and 2.1.313 on macOS and Windows &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/cursor-claude-extension-security-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Both versions need attention if installed during the incident window on 2026-10-29.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-the-ssh-indicator&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-the-ssh-indicator&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the SSH indicator&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-ssh-indicator&quot; aria-label=&quot;Copy link to step 1: Check the SSH indicator&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Cursor identifies &lt;code&gt;svc-telemetry&lt;/code&gt; in authorized keys as an indicator. Its macOS check is &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/cursor-claude-extension-security-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -qs&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; svc-telemetry&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ~/.ssh/authorized_keys&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;svc-telemetry key found&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;No key found; machine not impacted&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see one of those messages. Treat a negative result as this indicator&apos;s result; review Cursor&apos;s other indicators if the affected extension was installed. Windows users should use the &lt;a href=&quot;https://cursor.com/blog/claude-code-extension-security-notice#check-whether-you-are-impacted&quot;&gt;PowerShell check in Cursor&apos;s notice&lt;/a&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/cursor-claude-extension-security-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;follow-remediation-for-affected-hosts&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02follow-remediation-for-affected-hosts&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Follow remediation for affected hosts&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;follow-remediation-for-affected-hosts&quot; aria-label=&quot;Copy link to step 2: Follow remediation for affected hosts&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Cursor says uninstalling alone may leave persistence. Isolate hosts showing compromise and use the platform-specific remediation script linked from its notice &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/cursor-claude-extension-security-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;The macOS instructions run the downloaded script as the affected user, without root &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/cursor-claude-extension-security-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;bash&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; remediate-macos.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Cursor says the scripts return a nonzero status if anything remains. Rotate accessible credentials from a trusted system and assess whether the host needs rebuilding &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/cursor-claude-extension-security-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>EXTENSION</category><category>security</category><category>claude-code</category></item><item><title>Set up a private Hermes WhatsApp bot</title><link>https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup</guid><description>Choose the official integration or configure the unofficial bridge with explicit access controls.</description><pubDate>Sun, 01 Nov 2026 03:16:16 GMT</pubDate><content:encoded>&lt;p&gt;Hermes documents two WhatsApp connections: a Baileys bridge and the Business Cloud API &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. I would choose the official integration for a business bot; the bridge&apos;s documentation warns about account restrictions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;choose-the-official-integration-for-business-use&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01choose-the-official-integration-for-business-use&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose the official integration for business use&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-the-official-integration-for-business-use&quot; aria-label=&quot;Copy link to step 1: Choose the official integration for business use&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Hermes documents a setup wizard for the Cloud API &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; whatsapp-cloud&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You need a Meta Business account, a WhatsApp-enabled Meta app and a public HTTPS endpoint. The wizard checks credentials and explains the remaining webhook setup &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Continue with the linked Cloud API guide if this is your choice.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;pair-a-dedicated-number-for-the-bridge&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02pair-a-dedicated-number-for-the-bridge&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Pair a dedicated number for the bridge&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;pair-a-dedicated-number-for-the-bridge&quot; aria-label=&quot;Copy link to step 2: Pair a dedicated number for the bridge&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;For the alternative bridge, the docs require Node 18 or later and WhatsApp on a phone &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; This integration emulates WhatsApp Web. Hermes warns about account restrictions and recommends a dedicated number &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; whatsapp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see a QR code. In the bot account&apos;s WhatsApp settings, open Linked Devices and link it. The wizard confirms pairing &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;limit-who-can-reach-the-bot&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03limit-who-can-reach-the-bot&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Limit who can reach the bot&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;limit-who-can-reach-the-bot&quot; aria-label=&quot;Copy link to step 3: Limit who can reach the bot&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Before starting the gateway, merge the documented settings into &lt;code&gt;~/.hermes/.env&lt;/code&gt;. Replace the example number with an allowed sender&apos;s country-code number, without &lt;code&gt;+&lt;/code&gt; or spaces &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-title=&quot;~/.hermes/.env&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;~/.hermes/.env&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-title=&quot;~/.hermes/.env&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;WHATSAPP_ENABLED&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;WHATSAPP_MODE&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;bot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;WHATSAPP_ALLOWED_USERS&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;15551234567&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Hermes says unauthorized direct messages can receive pairing replies by default. Its configuration reference documents this override to keep those messages silent &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;yaml&quot; data-title=&quot;~/.hermes/config.yaml&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;~/.hermes/config.yaml&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot; data-title=&quot;~/.hermes/config.yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;whatsapp&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  unauthorized_dm_behavior&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;ignore&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;start-the-gateway&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04start-the-gateway&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start the gateway&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-the-gateway&quot; aria-label=&quot;Copy link to step 4: Start the gateway&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The bridge guide documents the foreground command &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; gateway&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Protect &lt;code&gt;~/.hermes/platforms/whatsapp/session&lt;/code&gt; as credentials. Hermes advises against unsolicited automated outbound messages &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-whatsapp-private-bot-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. You now have an explicit sender list and a configured response policy for strangers.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>WABOT</category><category>ai-agents</category><category>security</category></item><item><title>Check MCP Inspector security fixes before connecting</title><link>https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check</guid><description>Match your Inspector version to the published fixes before trusting a remote server.</description><pubDate>Sun, 01 Nov 2026 03:16:16 GMT</pubDate><content:encoded>&lt;p&gt;MCP Inspector&apos;s 2026-10-21 advisories describe remote servers or apps triggering local command execution &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Check the installed version before connecting it to an unfamiliar server.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;match-your-version-to-the-advisory&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01match-your-version-to-the-advisory&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Match your version to the advisory&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;match-your-version-to-the-advisory&quot; aria-label=&quot;Copy link to step 1: Match your version to the advisory&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The OAuth callback advisory lists versions 0.13.0 through 1.0.2 as affected and 1.0.3 as patched. It describes a remote server changing the connection transport during authorization &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;The remote MCP App advisory lists versions 0.20.0 through 1.0.2 as affected, also patched in 1.0.3. It describes an app obtaining the proxy token and reaching local command execution &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;For the v2 line, the Windows and WSL advisory covers 2.0.0 through 2.11.0 and lists 2.12.0 as patched. That issue can trigger during connection through the server&apos;s authorization URL &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. These are fixes for the named advisories, not a guarantee against every vulnerability.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;choose-the-maintained-release-line&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02choose-the-maintained-release-line&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose the maintained release line&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-the-maintained-release-line&quot; aria-label=&quot;Copy link to step 2: Choose the maintained release line&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The repository says its main line tracks released v2, while v1 receives security fixes. Its documented web launcher is &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; @modelcontextprotocol/inspector&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Moving from v1 to v2 changes CLI flags, configuration and Node requirements. Read the migration guide linked from the README before replacing an existing setup &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;If you need the maintained v1 line, the repository documents this separate tag &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; @modelcontextprotocol/inspector@v1-latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Confirm the resolved package version against the advisories before connecting. Do not assume a saved launcher command proves which version you have.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-stored-credentials&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-stored-credentials&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review stored credentials&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-stored-credentials&quot; aria-label=&quot;Copy link to step 3: Review stored credentials&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The README says Inspector stores secrets in the OS keychain when available. Without one, it can use &lt;code&gt;~/.mcp-inspector/secrets.json&lt;/code&gt;, unencrypted unless you supply a key. Follow its linked storage instructions before entering credentials &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/mcp-inspector-security-update-check#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;You now have the affected ranges and release paths needed to check your setup before opening a connection.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>INSPECT</category><category>security</category><category>mcp</category></item><item><title>Control Claude Code idle compaction</title><link>https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings</guid><description>Choose whether long idle conversations compact automatically, with the documented version and cache limits.</description><pubDate>Sun, 01 Nov 2026 03:14:39 GMT</pubDate><content:encoded>&lt;p&gt;Claude Code can replace a long idle conversation with a summary before you return, per Anthropic&apos;s settings reference &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. You can turn that behavior off without changing every compaction setting.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;open-the-idle-compaction-setting&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01open-the-idle-compaction-setting&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Open the idle compaction setting&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;open-the-idle-compaction-setting&quot; aria-label=&quot;Copy link to step 1: Open the idle compaction setting&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;In the terminal, open the configuration menu and change the Idle compaction row. Anthropic says this row requires Claude Code v2.1.302 or later, saves to user settings and takes effect immediately &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the row when it is available. The docs say another settings source or unavailable feature flags can explain a missing row &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;set-the-preference-in-json&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02set-the-preference-in-json&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Set the preference in JSON&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;set-the-preference-in-json&quot; aria-label=&quot;Copy link to step 2: Set the preference in JSON&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;For file-based configuration, merge this field into your settings. The setting requires v2.1.290 or later &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. User settings apply across projects, subject to higher-priority configuration &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;json&quot; data-title=&quot;~/.claude/settings.json&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;~/.claude/settings.json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-title=&quot;~/.claude/settings.json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  &quot;idleCompaction&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;To restore idle compaction, change the value to &lt;code&gt;true&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-which-settings-loaded&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-which-settings-loaded&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check which settings loaded&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-which-settings-loaded&quot; aria-label=&quot;Copy link to step 3: Check which settings loaded&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic recommends &lt;code&gt;/status&lt;/code&gt; when a setting appears to be ignored &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see which configuration sources loaded. A managed or project setting can override your user preference &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;decide-when-to-compact-manually&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04decide-when-to-compact-manually&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Decide when to compact manually&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;decide-when-to-compact-manually&quot; aria-label=&quot;Copy link to step 4: Decide when to compact manually&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The prompt-caching docs recommend compacting at a natural break. Compaction makes a separate summary request; cached history can reduce its input cost, while expired history must be processed again &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/compact&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Idle compaction requires an eligible session, automatic compaction enabled, a one-hour cache lifetime, available feature flags, the context threshold and an awake computer after about an hour idle. The documented default threshold is 200,000 tokens &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-idle-compaction-settings#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;You now control idle compaction separately and have a manual command for the next natural break in your work.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>IDLE</category><category>claude-code</category><category>cost-and-context</category></item><item><title>Use assisted permissions in Copilot and Claude Code</title><link>https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions</guid><description>Reduce routine approval prompts while keeping documented permission rules and review limits.</description><pubDate>Sun, 01 Nov 2026 03:14:39 GMT</pubDate><content:encoded>&lt;p&gt;Copilot assisted permissions and Claude Code auto mode can review actions before they run, according to their docs &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. I would start with a single session so you can see which requests still reach you.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;enable-assisted-permissions-for-one-copilot-session&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01enable-assisted-permissions-for-one-copilot-session&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Enable assisted permissions for one Copilot session&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;enable-assisted-permissions-for-one-copilot-session&quot; aria-label=&quot;Copy link to step 1: Enable assisted permissions for one Copilot session&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;GitHub documents this command for the interactive CLI &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Enter it at the Copilot prompt.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/permissions assisted&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Check the active mode:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/permissions show&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the session&apos;s permission mode. Eligible requests get a model review; requests requiring your decision still prompt you. Existing deny rules and enterprise restrictions remain in force &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;make-copilot-remember-your-preference&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02make-copilot-remember-your-preference&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Make Copilot remember your preference&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;make-copilot-remember-your-preference&quot; aria-label=&quot;Copy link to step 2: Make Copilot remember your preference&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;For new interactive sessions, GitHub documents this setting in your user configuration. Merge the field into your existing file &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;json&quot; data-title=&quot;~/.copilot/settings.json&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;~/.copilot/settings.json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-title=&quot;~/.copilot/settings.json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  &quot;defaultPermissionMode&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;assisted&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Managed defaults can take precedence, and resumed sessions retain their saved mode. To return the current session to manual review, enter &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/permissions manual&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-claude-code-s-rules&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-claude-codes-rules&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check Claude Code&apos;s rules&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-claude-code-s-rules&quot; aria-label=&quot;Copy link to step 3: Check Claude Code&amp;#x27;s rules&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic documents this command for inspecting permission rules and their source files &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Use it before changing how actions are approved.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/permissions&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the configured rules. A matching ask rule can still require approval in auto mode &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;start-claude-code-with-auto-mode&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04start-claude-code-with-auto-mode&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start Claude Code with auto mode&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-claude-code-with-auto-mode&quot; aria-label=&quot;Copy link to step 4: Start Claude Code with auto mode&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic documents the permission-mode flag for selecting auto mode &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Run it in your project terminal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Auto mode allows actions after model review. Anthropic explicitly says it does not guarantee safety; keep sensitive operations under review &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --permission-mode&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; auto&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;If auto mode is unavailable, check the account, model and administrator requirements on the linked permission-mode page. Do not substitute bypass permissions to get past that refusal &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-claude-assisted-permissions#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Your next session now uses the mode you chose. Keep &lt;code&gt;/permissions&lt;/code&gt; available when an unexpected approval or denial needs inspection.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>APPROVE</category><category>github-copilot</category><category>claude-code</category></item><item><title>Audit an existing page with Hallmark</title><link>https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page</guid><description>Install Hallmark and audit before redesigning, with separate requirements for browser checks.</description><pubDate>Sun, 01 Nov 2026 03:14:39 GMT</pubDate><content:encoded>&lt;p&gt;Hallmark can audit an existing page before changing it, according to its README &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. I would use that report to choose a specific design problem before asking for a redesign.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-the-skill&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-the-skill&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install the skill&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-the-skill&quot; aria-label=&quot;Copy link to step 1: Install the skill&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The README documents this global installation, requiring Node 18 or later. It installs across projects; omit &lt;code&gt;-g&lt;/code&gt; for the current project only &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; nutlope/hallmark&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -g&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For Claude Code, the documented install location is &lt;code&gt;~/.claude/skills/hallmark&lt;/code&gt;. Other supported agents have their own invocation conventions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;audit-the-existing-page&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02audit-the-existing-page&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Audit the existing page&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;audit-the-existing-page&quot; aria-label=&quot;Copy link to step 2: Audit the existing page&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Run this in Claude Code, replacing the example path with your page. The README says audit reports findings without redesigning &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/hallmark audit ./index.html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should get a report to review before requesting edits. Hallmark&apos;s skill instructions give an existing root design document priority, followed by the project&apos;s established visual choices &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Keep your approved design rules available to the agent.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;enable-browser-checks-when-needed&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03enable-browser-checks-when-needed&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Enable browser checks when needed&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;enable-browser-checks-when-needed&quot; aria-label=&quot;Copy link to step 3: Enable browser checks when needed&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The README says rendered checks need Chrome and this package. Static checks remain available without them &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; i&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -g&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; puppeteer-core&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;request-a-redesign-deliberately&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04request-a-redesign-deliberately&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Request a redesign deliberately&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;request-a-redesign-deliberately&quot; aria-label=&quot;Copy link to step 4: Request a redesign deliberately&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Use the README&apos;s redesign command when you want changes &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; This requests edits to your page. Keep a recoverable copy of your work before running it.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/hallmark redesign ./src/app&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The README describes preserving content and behavior while changing layout and appearance &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hallmark-audit-redesign-existing-page#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Check the resulting links and forms yourself before accepting the result. Your audit gives you specific findings to compare against that revision.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>HALLMARK</category><category>claude-code</category><category>dev-tools</category></item><item><title>Review what your AI assistant&apos;s browser can access</title><link>https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review</guid><description>Review embedded-browser risks from the EMBRACE report without treating its publication-day patch status as current.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An AI assistant&apos;s embedded browser can expose more than the page you opened. In its 2026-10-29 EMBRACE report, Forever Security described flaws in Cursor, GitHub Copilot, Codex, VS Code and Claude Desktop. I would review that browser&apos;s access before opening an unfamiliar project&apos;s preview. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;identify-the-browser-integration-you-use&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01identify-the-browser-integration-you-use&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Identify the browser integration you use&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;identify-the-browser-integration-you-use&quot; aria-label=&quot;Copy link to step 1: Identify the browser integration you use&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Record the assistant, its installed version and whether it opens pages inside the app. Forever Security&apos;s findings concern particular embedded-browser integrations. Naming an affected product does not establish that every version or browsing mode has the same flaw. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The technical report describes different outcomes: page content reaching Cursor&apos;s agent instructions, a spoofed address in GitHub Copilot, and local-file access in Codex, Claude Desktop and VS Code. These require different fixes. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-disclosure-date-before-deciding-you-are-patched&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-the-disclosure-date-before-deciding-you-are-patched&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the disclosure date before deciding you are patched&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-disclosure-date-before-deciding-you-are-patched&quot; aria-label=&quot;Copy link to step 2: Check the disclosure date before deciding you are patched&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Forever Security reported that Cursor had patched its finding on 2026-10-01 and GitHub Copilot had fixed the address spoof in build &lt;code&gt;1.1.29&lt;/code&gt; on 2026-10-13. It described Codex and VS Code findings as open when it published on 2026-10-29. Those are the researcher&apos;s dated statements, not a current patch inventory. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Compare your installed build with the vendor&apos;s current security notices and release notes. If you cannot find a notice covering the reported browser issue, do not infer that an unrelated update resolved it.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-local-previews-as-untrusted-input&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-local-previews-as-untrusted-input&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review local previews as untrusted input&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-local-previews-as-untrusted-input&quot; aria-label=&quot;Copy link to step 3: Review local previews as untrusted input&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The technical analysis describes local HTML reading files beyond the intended project. In the Claude Desktop and VS Code cases, the researchers reported that restrictions applied to the page but missed background workers. A worker is a script the page starts separately. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Before opening an unfamiliar repository&apos;s preview, inspect what it loads and which files the assistant can reach. I would use a separate disposable environment without personal credentials for untrusted examples. That limits what is exposed; it does not repair a browser vulnerability.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;inspect-the-action-behind-an-approval&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04inspect-the-action-behind-an-approval&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect the action behind an approval&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-the-action-behind-an-approval&quot; aria-label=&quot;Copy link to step 4: Inspect the action behind an approval&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The Cursor finding used page-supplied text to influence the agent&apos;s instructions. GitHub Copilot&apos;s finding concerned what address the integration showed to the agent and user. A familiar-looking page or an assistant-generated link is insufficient evidence that the next action is safe. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-assistant-browser-security-review#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Read the actual command, destination and requested file access before approving an action. If an organization manages your machine, give its security team the installed version and the relevant finding so they can decide which browser features to restrict while checking the vendor&apos;s response.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>security</category><category>ai-agents</category></item><item><title>Compare both sides before accepting AI advice</title><link>https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides</guid><description>Write your choice before asking an agent for both arguments; the study does not prove this prevents bias.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Write down your choice before asking an AI agent what it would do. That is my suggestion from the BOTHSIDES post, followed by asking for the strongest case on each side. It is a review habit, with no claim that it prevents bias. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Anthropic&apos;s study, published on 2026-10-27, put 50 causal-inference analysts to work with Claude Code. A hidden coin flip assigned each agent a preference. Across four analytical choices, the analysts followed that preference 86% of the time, per the paper. These were choices with defensible alternatives, not questions with one correct answer. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;record-your-choice-before-reading-the-recommendation&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01record-your-choice-before-reading-the-recommendation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Record your choice before reading the recommendation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;record-your-choice-before-reading-the-recommendation&quot; aria-label=&quot;Copy link to step 1: Record your choice before reading the recommendation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Put your preferred option and the reason in a note before asking the agent to recommend one. Keep the note so you can compare it with your eventual decision. This is the first step I suggested in the post. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The researchers did not record every participant&apos;s preference before the agent spoke, so they could not measure each person&apos;s change of mind. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;ask-for-the-strongest-case-for-each-option&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02ask-for-the-strongest-case-for-each-option&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Ask for the strongest case for each option&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;ask-for-the-strongest-case-for-each-option&quot; aria-label=&quot;Copy link to step 2: Ask for the strongest case for each option&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Use the second part of my suggestion: ask the agent to argue each option. Read both arguments before accepting its recommendation. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Anthropic reports that the agents rarely argued the alternative well. Its proposed future research includes agents that explain both sides or ask for the expert&apos;s view first. Those proposals were not tested as remedies in this experiment. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;compare-your-reasons-with-the-agent-s-reasons&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03compare-your-reasons-with-the-agents-reasons&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Compare your reasons with the agent&apos;s reasons&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;compare-your-reasons-with-the-agent-s-reasons&quot; aria-label=&quot;Copy link to step 3: Compare your reasons with the agent&amp;#x27;s reasons&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Return to your note and identify which reasons changed. If you keep an argument from the agent, say where it came from when you explain the decision. I suggest keeping that comparison with the work so someone reviewing it can see what changed.&lt;/p&gt;
&lt;p&gt;In the paper&apos;s follow-up survey, 77% of analysts repeated an agent argument in at least one answer, while 15% credited the agent anywhere. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;keep-the-study-s-limits-with-the-claim&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04keep-the-studys-limits-with-the-claim&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep the study&apos;s limits with the claim&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-the-study-s-limits-with-the-claim&quot; aria-label=&quot;Copy link to step 4: Keep the study&amp;#x27;s limits with the claim&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Treat the 86% result as a result from this experiment. Anthropic deliberately strengthened the agents&apos; preferences and studied one task with one model. It does not establish how often developers defer to agents in ordinary coding sessions. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-judgment-compare-both-sides#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;You now have your original choice beside the arguments you considered and a reason for the decision you kept.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>BOTHSIDES</category><category>ai-agents</category><category>claude-code</category></item><item><title>Add five skill sets to Claude Code</title><link>https://fullbytedeveloper.com/blog/claude-code-five-skill-sets</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-five-skill-sets</guid><description>Install skills for planning, design, testing and documents, then check their work on a small task.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Superpowers, frontend-design, Karpathy-inspired rules, webapp-testing and document skills cover different jobs in Claude Code. I suggest starting with the one that fits your next task, then reviewing its output before adding more. The installation commands below come from the maintainers&apos; repositories. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Enter these commands inside Claude Code, not in your shell.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-superpowers-for-a-planned-implementation&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-superpowers-for-a-planned-implementation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install Superpowers for a planned implementation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-superpowers-for-a-planned-implementation&quot; aria-label=&quot;Copy link to step 1: Install Superpowers for a planned implementation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Per the Superpowers repo, its workflow starts by clarifying the requested change, gets your approval on a design, then prepares a plan with tests and review. Install it from Claude&apos;s official plugin marketplace: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install superpowers@claude-plugins-official&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Give Claude a development task with a clear outcome. The repo says its skills activate automatically. You should see design discussion before implementation; inspect the proposed scope before approving it. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-frontend-design-for-a-specific-visual-brief&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02add-frontend-design-for-a-specific-visual-brief&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add frontend-design for a specific visual brief&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-frontend-design-for-a-specific-visual-brief&quot; aria-label=&quot;Copy link to step 2: Add frontend-design for a specific visual brief&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Register Anthropic&apos;s marketplace, then install its example bundle. These are the repository&apos;s commands. The bundle contains both frontend-design and webapp-testing, along with other example skills. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add anthropics/skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install example-skills@anthropic-agent-skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Anthropic says you can invoke an installed skill by mentioning its name. Ask Claude to use frontend-design and supply the page&apos;s purpose, audience and real content. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The skill calls for a design plan covering typography, colors and layout before implementation. Check that those choices fit your brief. It also asks for mobile support, keyboard focus and reduced-motion support, so include those in your visual review. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-the-karpathy-inspired-rules-before-installing&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-the-karpathy-inspired-rules-before-installing&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review the Karpathy-inspired rules before installing&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-the-karpathy-inspired-rules-before-installing&quot; aria-label=&quot;Copy link to step 3: Review the Karpathy-inspired rules before installing&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The community implementation at &lt;code&gt;multica-ai/andrej-karpathy-skills&lt;/code&gt; turns Karpathy&apos;s observations about coding agents into guidance on assumptions, small changes and verifiable outcomes. This is the implementation linked here; the caption&apos;s name alone does not identify a repository. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Its README still gives the earlier &lt;code&gt;forrestchang&lt;/code&gt; address, which redirects to the current repository. These are its plugin installation commands: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add forrestchang/andrej-karpathy-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install andrej-karpathy-skills@karpathy-skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Per the repo, this makes the skill available across projects. Read it alongside your existing project rules before using it. For a small change, check the resulting diff: unrelated edits and unnecessary abstractions are exactly what these guidelines ask the agent to avoid. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;use-webapp-testing-on-a-running-local-page&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04use-webapp-testing-on-a-running-local-page&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Use webapp-testing on a running local page&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;use-webapp-testing-on-a-running-local-page&quot; aria-label=&quot;Copy link to step 4: Use webapp-testing on a running local page&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;If you installed the example bundle above, webapp-testing is already included. Mention the skill and give Claude your local page address plus the interaction to check. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Anthropic&apos;s skill uses Python Playwright scripts. For a running dynamic app, it instructs the agent to wait for the page to load, inspect its rendered elements, and then interact with the discovered controls. It supports screenshots and browser logs. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Review the test&apos;s actual actions and results. A screenshot can show the page rendered; checking that a button submits the intended data needs a test of that behavior.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;install-document-skills-for-the-file-you-need&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05install-document-skills-for-the-file-you-need&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install document skills for the file you need&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-document-skills-for-the-file-you-need&quot; aria-label=&quot;Copy link to step 5: Install document skills for the file you need&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;With Anthropic&apos;s marketplace already registered, install its document bundle: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install document-skills@anthropic-agent-skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The bundle contains &lt;code&gt;docx&lt;/code&gt;, &lt;code&gt;pdf&lt;/code&gt;, &lt;code&gt;pptx&lt;/code&gt; and &lt;code&gt;xlsx&lt;/code&gt; skills. Mention the matching skill and provide the file or describe the document you need. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Anthropic publishes these document skills as source-available, with different licensing from its open-source examples. It also tells users to test the examples in their own environment. Open the resulting file in its normal viewer and inspect the content and formatting before sharing it. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-five-skill-sets#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded><category>SKILLS</category><category>claude-code</category><category>dev-tools</category></item><item><title>Five Claude Code skills for marketing drafts</title><link>https://fullbytedeveloper.com/blog/claude-code-marketing-skills</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-marketing-skills</guid><description>Install skills for copy, landing pages and email, then review their output against your sources.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;These five skills cover writing marketing pages, reviewing conversions, planning emails and editing a draft&apos;s voice. The install steps below come from their repositories. You still need to check the claims in the resulting copy &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-humanizer-for-a-prose-edit&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-humanizer-for-a-prose-edit&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install Humanizer for a prose edit&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-humanizer-for-a-prose-edit&quot; aria-label=&quot;Copy link to step 1: Install Humanizer for a prose edit&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Blader&apos;s Humanizer removes recurring AI writing patterns while preserving the meaning, per its README &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Run these commands inside Claude Code. The plugin requires Claude Code 2.1.142 or newer &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add blader/humanizer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install humanizer@humanizer&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the installed plugin available as &lt;code&gt;/humanizer:humanizer&lt;/code&gt;, per the README &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Give it your draft and a writing sample so it has a voice to match.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;install-the-marketing-collection-for-copywriting&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02install-the-marketing-collection-for-copywriting&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install the marketing collection for Copywriting&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-the-marketing-collection-for-copywriting&quot; aria-label=&quot;Copy link to step 2: Install the marketing collection for Copywriting&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Corey Haines&apos;s Copywriting skill handles homepage and landing-page copy. Its instructions first check for product context and require claims to be supportable &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. The repository documents this terminal command for installing the collection for Claude Code &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; coreyhaines31/marketingskills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -a&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; claude-code&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This installs the collection, including the next two skills. For Copywriting, give the agent the page you are writing, the audience and the evidence behind your offer &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-a-landing-page-with-cro&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-a-landing-page-with-cro&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review a landing page with CRO&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-a-landing-page-with-cro&quot; aria-label=&quot;Copy link to step 3: Review a landing page with CRO&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The current skill is named &lt;code&gt;cro&lt;/code&gt;; the repository renamed &lt;code&gt;page-cro&lt;/code&gt; and merged form review into it &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. It examines marketing pages and forms for conversion problems, per its instructions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. Invoke it inside the agent, then supply the page and the action visitors should take &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/cro&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;plan-a-sequence-with-emails&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04plan-a-sequence-with-emails&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Plan a sequence with Emails&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;plan-a-sequence-with-emails&quot; aria-label=&quot;Copy link to step 4: Plan a sequence with Emails&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The current name is &lt;code&gt;emails&lt;/code&gt;, replacing &lt;code&gt;email-sequence&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Its instructions cover welcome sequences and other automated email flows, including their timing and individual messages &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;. Start it inside the agent and supply the sequence&apos;s audience and goal &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/emails&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-content-humanizer-for-brand-voice&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05add-content-humanizer-for-brand-voice&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add Content Humanizer for brand voice&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-content-humanizer-for-brand-voice&quot; aria-label=&quot;Copy link to step 5: Add Content Humanizer for brand voice&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Alireza Rezvani&apos;s README provides these commands for its marketing bundle &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;. The bundle includes Content Humanizer, whose instructions ask for the draft, voice examples, audience and goal before editing &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-7&quot; class=&quot;cite&quot; aria-label=&quot;Source 7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add alirezarezvani/claude-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install marketing-skills@claude-code-skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This adds the marketing bundle. Ask for its &lt;code&gt;content-humanizer&lt;/code&gt; skill and provide your writing example &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-marketing-skills#source-7&quot; class=&quot;cite&quot; aria-label=&quot;Source 7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;The draft is ready for your factual review. Check its names, numbers and promises against the material you supplied before publishing it.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>MARKETING</category><category>claude-code</category><category>dev-tools</category></item><item><title>Reduce Claude Code tool output with three tools</title><link>https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens</guid><description>Try RTK, Headroom or Context Mode, with usage checks before you trust their token savings.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;RTK, Headroom and Context Mode each reduce the tool output sent to your model, according to their repositories &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. I would try one at a time so you can check what changed and whether Claude still gets the details your task needs.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;check-your-current-session-usage&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01check-your-current-session-usage&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check your current session usage&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-your-current-session-usage&quot; aria-label=&quot;Copy link to step 1: Check your current session usage&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Run this inside Claude Code before changing your setup. Anthropic documents session token usage and estimated costs under &lt;code&gt;/usage&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/usage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see usage information for your account and session. Per the docs, the session cost is an estimate; subscription billing does not use that estimate &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Save the figures alongside the task you asked Claude to do.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;try-rtk-for-shell-output&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02try-rtk-for-shell-output&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Try RTK for shell output&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;try-rtk-for-shell-output&quot; aria-label=&quot;Copy link to step 2: Try RTK for shell output&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The RTK README documents a Homebrew install and a check that distinguishes this package from other tools named RTK &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Run these commands in your terminal.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; rtk&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;rtk&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --version&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;rtk&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; gain&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the installed version and RTK&apos;s savings dashboard &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Its Claude Code integration uses a hook to rewrite supported shell commands to RTK equivalents.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; The following command changes your global Claude Code integration. The README says it also offers proxy configuration; review those choices before accepting them &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;rtk&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; init&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -g&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;After using Claude, run &lt;code&gt;rtk gain&lt;/code&gt; again to inspect RTK&apos;s recorded savings &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;try-headroom-through-its-local-proxy&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03try-headroom-through-its-local-proxy&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Try Headroom through its local proxy&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;try-headroom-through-its-local-proxy&quot; aria-label=&quot;Copy link to step 3: Try Headroom through its local proxy&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Headroom&apos;s README documents an isolated install with &lt;code&gt;uv&lt;/code&gt;. Its wrapper starts a local proxy and launches Claude through it &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; The wrapper also installs Serena for code navigation and registers it for the Claude project in &lt;code&gt;~/.claude.json&lt;/code&gt;, per the README. Review that integration if you already manage MCP configuration &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; tool&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --python&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; 3.13&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;headroom-ai[all]&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;headroom&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; wrap&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; claude&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use another terminal to check the installation and routing with the documented health check &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;headroom&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; doctor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Launch future sessions with &lt;code&gt;headroom wrap claude&lt;/code&gt; when you want them routed through Headroom &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;try-the-context-mode-plugin&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04try-the-context-mode-plugin&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Try the Context Mode plugin&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;try-the-context-mode-plugin&quot; aria-label=&quot;Copy link to step 4: Try the Context Mode plugin&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Context Mode&apos;s README describes running tools in a sandbox and keeping large results outside the conversation until needed. Install its Claude Code plugin by entering these commands inside Claude &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add mksglu/context-mode&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install context-mode@context-mode&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Restart Claude Code, then run the plugin&apos;s diagnostic command &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;7&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;7&quot; aria-label=&quot;Copy code block 7&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/context-mode:ctx-doctor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see its checks marked &lt;code&gt;[x]&lt;/code&gt;, per the README. After using the plugin, inspect its context statistics &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-tool-output-tokens#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;8&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;8&quot; aria-label=&quot;Copy code block 8&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/context-mode:ctx-stats&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You now have the chosen tool&apos;s statistics to compare with Claude Code&apos;s session usage. Repeat a comparable task and check the answer&apos;s correctness before deciding to keep that setup.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>TOKENCUT</category><category>cost-and-context</category><category>claude-code</category></item><item><title>Set up Copilot Memory and review Dreaming</title><link>https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup</guid><description>Save a Copilot preference and review it; optional Dreaming uses AI credits even when a run changes nothing.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Copilot Memory can save a preference across sessions, but asking it to remember something does not guarantee it will store or use it. GitHub announced general availability on paid Copilot plans on 2026-10-28. I suggest starting with one preference you can check. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;ask-copilot-to-remember-one-preference&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01ask-copilot-to-remember-one-preference&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Ask Copilot to remember one preference&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;ask-copilot-to-remember-one-preference&quot; aria-label=&quot;Copy link to step 1: Ask Copilot to remember one preference&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;If Memory is enabled for your account, paste GitHub&apos;s example into a Copilot conversation. It tells Copilot how to format your pull request descriptions. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Remember to start my pull request descriptions with a TL;DR&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The model decides whether to save a memory. For guidance you need consistently, GitHub recommends custom instructions. State whether a new memory applies to you across projects or to everyone working in the current repository. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-whether-the-cli-allows-memory&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02check-whether-the-cli-allows-memory&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check whether the CLI allows memory&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-whether-the-cli-allows-memory&quot; aria-label=&quot;Copy link to step 2: Check whether the CLI allows memory&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;In an interactive Copilot CLI session, enter the command from GitHub&apos;s personal settings documentation. This is a Copilot command, not a shell command. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/memory show&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the client setting and a link to manage stored memories on GitHub. A locally enabled setting does not override account or repository policies. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;If personal Memory is off, open your profile menu on GitHub, choose Copilot settings, and find Copilot Memory under Features. Enable it there if your organization allows it. The CLI can also have its own opt-out. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-what-copilot-stored&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-what-copilot-stored&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review what Copilot stored&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-what-copilot-stored&quot; aria-label=&quot;Copy link to step 3: Review what Copilot stored&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Open your GitHub profile menu, choose Copilot settings, then Memory in the sidebar. Per GitHub&apos;s docs, this is where you review and delete personal preferences. Check whether the saved text says what you intended. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;For repository facts, open the repository&apos;s Settings, then Copilot, then Memory. GitHub requires write access and enabled personal preferences, including any required organization permission, to view or delete those facts. Repository memory controls are separate. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;decide-whether-to-enable-dreaming&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04decide-whether-to-enable-dreaming&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Decide whether to enable Dreaming&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;decide-whether-to-enable-dreaming&quot; aria-label=&quot;Copy link to step 4: Decide whether to enable Dreaming&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Memory works without Dreaming. GitHub describes Dreaming as optional background maintenance that can revise or delete memories and propose changes to checked-in instructions through pull requests. Those files change only if you merge the pull request. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; every Dreaming run uses AI credits, including runs that change nothing. GitHub&apos;s initial public preview excludes Copilot Pro, requires access to GPT-6.1 Sol, and requires session syncing for personal memory curation and repository customization. Check those requirements and your spending controls before enabling it. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;For personal memories, open GitHub Settings, then Copilot, then Features. With Copilot Memory enabled, set the Dreaming dropdown to Enabled. This does not enable Dreaming for your repositories, and organization policies can prevent it. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;inspect-a-dreaming-run-before-using-its-changes&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05inspect-a-dreaming-run-before-using-its-changes&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Inspect a Dreaming run before using its changes&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;inspect-a-dreaming-run-before-using-its-changes&quot; aria-label=&quot;Copy link to step 5: Inspect a Dreaming run before using its changes&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;In the Copilot app, open Automations, then Dreaming. Open a completed personal or repository run and inspect its memory changes. Repository runs appear for repositories you added to the app. GitHub schedules runs; refreshing the list does not start one. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;You should see the run status and, when available, memory additions, updates or removals. Open any linked pull request and review proposed instruction changes before merging. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/copilot-memory-dreaming-setup#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;You have a place to inspect what Copilot remembers and a separate decision about whether to pay for background Dreaming runs.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>TIDY</category><category>github-copilot</category><category>ai-agents</category></item><item><title>Save web content as Markdown with Defuddle and Obsidian</title><link>https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow</guid><description>Extract a web page, review its Markdown, and add Obsidian skills before trying a larger knowledge-base workflow.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Defuddle extracts a page&apos;s main content and can return Markdown for your notes. Its repository calls the tool a work in progress, so I suggest checking one extracted page before handing a collection to an agent. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;install-defuddle-and-extract-one-page&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01install-defuddle-and-extract-one-page&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Install Defuddle and extract one page&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;install-defuddle-and-extract-one-page&quot; aria-label=&quot;Copy link to step 1: Install Defuddle and extract one page&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;With Node.js and npm available, run the global installation command from Defuddle&apos;s README. The second command is its Markdown example for a public article. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -g&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; defuddle&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -L&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://stephango.com/saw&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt; npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; defuddle&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; parse&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --markdown&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should get extracted Markdown in the terminal. Compare it with the source page before saving it as a note. Check that headings, links and the paragraphs you need survived. The README says Defuddle removes page clutter; that is not a guarantee that every extraction preserves everything you want. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Save the reviewed text in your Obsidian vault and retain the original URL so you can check the source later.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-the-obsidian-skills-to-your-agent&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02add-the-obsidian-skills-to-your-agent&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add the Obsidian skills to your agent&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-the-obsidian-skills-to-your-agent&quot; aria-label=&quot;Copy link to step 2: Add the Obsidian skills to your agent&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The Obsidian skills repository documents this HTTPS installation command: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://github.com/kepano/obsidian-skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Its skills cover Obsidian Markdown, Bases, JSON Canvas, the Obsidian CLI and Defuddle. Use the skill appropriate to the file you are working on; an ordinary note needs different instructions from a canvas. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Ask the agent to work on the note you saved, then open the result in Obsidian. Check that its links resolve and that the text still agrees with the source. Review the change before letting the agent edit the rest of your vault.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-second-brain-os-before-adding-automation&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-second-brain-os-before-adding-automation&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review Second Brain OS before adding automation&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-second-brain-os-before-adding-automation&quot; aria-label=&quot;Copy link to step 3: Review Second Brain OS before adding automation&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The caption includes this command to add the project&apos;s skills: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; undefined-ui/second-brain-os&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The repository&apos;s full setup also includes a starter vault, commands, agents and supporting scripts. Installing skills alone does not reproduce that setup. Its README specifically says its maintenance commands need scripts copied into the vault. Follow the linked quickstart when you want those features. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Per the repository, the workflow keeps source material separate from linked wiki notes. Start with a copy of your notes and inspect the first changes. Keep the source article available when checking whether an agent&apos;s summary or cross-reference is correct. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;try-tolaria-separately-if-you-prefer-its-editor&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04try-tolaria-separately-if-you-prefer-its-editor&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Try Tolaria separately if you prefer its editor&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;try-tolaria-separately-if-you-prefer-its-editor&quot; aria-label=&quot;Copy link to step 4: Try Tolaria separately if you prefer its editor&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Tolaria can open a folder of Markdown files as a vault. It is optional for this workflow. On macOS with Homebrew installed, its official documentation gives this command: &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --cask&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; tolaria&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Open Tolaria and choose its Getting Started vault to inspect the app before opening your notes. The official guide also provides desktop downloads for Windows and Linux. &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/defuddle-obsidian-markdown-workflow#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Use a copied folder for the first comparison. Open a note in both editors and check its formatting and links before choosing where to maintain the originals.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>dev-tools</category><category>ai-agents</category></item><item><title>Run a Claude Code sprint with gstack</title><link>https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow</guid><description>Use gstack&apos;s planning, review and QA skills in order, after reviewing the installer&apos;s hooks.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Garry Tan&apos;s gstack gives Claude Code separate skills for planning, code review and QA. The repository documents a sprint that passes work between them &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;review-setup-and-install&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01review-setup-and-install&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review setup and install&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-setup-and-install&quot; aria-label=&quot;Copy link to step 1: Review setup and install&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The install docs require Claude Code, Git and Bun, and recommend Bun v1.4.2 or later. Windows also needs Node.js &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; &lt;code&gt;./setup&lt;/code&gt; registers hooks in &lt;code&gt;~/.claude/settings.json&lt;/code&gt;, including a default Stop hook. Review the &lt;a href=&quot;https://github.com/garrytan/gstack/blob/main/docs/install.md#hooks-that-setup-registers&quot;&gt;installer&apos;s hook details&lt;/a&gt; before running it &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;The repository&apos;s personal install command is &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; clone&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --single-branch&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --depth&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://github.com/garrytan/gstack.git&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ~/.claude/skills/gstack&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ~/.claude/skills/gstack&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;./setup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;describe-the-problem-before-building&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02describe-the-problem-before-building&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Describe the problem before building&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;describe-the-problem-before-building&quot; aria-label=&quot;Copy link to step 2: Describe the problem before building&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;In Claude Code, run each skill separately and answer its questions before continuing. The documented order is &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/office-hours&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plan-ceo-review&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plan-eng-review&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should get a design document from &lt;code&gt;/office-hours&lt;/code&gt; and an engineering plan covering data flow and tests from &lt;code&gt;/plan-eng-review&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Approve the plan before asking Claude to build.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-and-test-the-changes&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03review-and-test-the-changes&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review and test the changes&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-and-test-the-changes&quot; aria-label=&quot;Copy link to step 3: Review and test the changes&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;After implementation, run these separately. Give &lt;code&gt;/qa&lt;/code&gt; your staging URL or an isolated local target &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/review&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/qa&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The README says both skills can fix code, so inspect their changes &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;ship-and-review-the-sprint&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04ship-and-review-the-sprint&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Ship and review the sprint&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;ship-and-review-the-sprint&quot; aria-label=&quot;Copy link to step 4: Ship and review the sprint&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; &lt;code&gt;/ship&lt;/code&gt; runs the release workflow, including tests and a pull request. Use it when the changes are ready &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/ship&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For the repository&apos;s retrospective workflow, run &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/retro&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You can use that report to choose what to change in the next sprint &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/gstack-claude-code-sprint-workflow#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>SPRINT</category><category>claude-code</category><category>dev-tools</category></item><item><title>Skip idle Hermes cron agent runs</title><link>https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs</guid><description>Let a script skip unchanged polls before Hermes starts an agent, with a check you supply.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hermes can skip an agent run when a scheduled script finds nothing new, per its cron docs &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;return-the-skip-signal&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01return-the-skip-signal&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Return the skip signal&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;return-the-skip-signal&quot; aria-label=&quot;Copy link to step 1: Return the skip signal&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Have your pre-check script emit this as its final stdout line when nothing needs processing &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;json&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;&quot;wakeAgent&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: false}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The docs say Hermes skips that tick&apos;s agent. Omitting &lt;code&gt;wakeAgent&lt;/code&gt; defaults to waking it. Your script still needs to detect changes &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;attach-your-pre-check&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02attach-your-pre-check&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Attach your pre-check&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;attach-your-pre-check&quot; aria-label=&quot;Copy link to step 2: Attach your pre-check&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Ask Hermes to create a job with your script attached. The docs&apos; feed example uses &lt;code&gt;script=&quot;feed-changed.sh&quot;&lt;/code&gt; and &lt;code&gt;schedule=&quot;every 30m&quot;&lt;/code&gt;; its script lives under &lt;code&gt;~/.hermes/scripts/&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Check the registered job:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; cron&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-the-scheduler&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03check-the-scheduler&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check the scheduler&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-the-scheduler&quot; aria-label=&quot;Copy link to step 3: Check the scheduler&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The gateway must be running for scheduled agent jobs. Inspect its status &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; cron&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see scheduler health and the next scheduled run &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;For tasks fully handled by a script, the docs also provide &lt;code&gt;--no-agent&lt;/code&gt;. After supplying &lt;code&gt;memory-watchdog.sh&lt;/code&gt; and configuring Telegram delivery, their example is &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;hermes&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; cron&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;every 5m&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;  --no-agent&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;  --script&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; memory-watchdog.sh&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;  --deliver&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; telegram&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;  --name&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;memory-watchdog&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;That job delivers script output directly, without starting an agent &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/hermes-cron-skip-idle-runs#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>CRONGATE</category><category>ai-agents</category><category>cost-and-context</category></item><item><title>Set up a local AI phone agent on Apple Silicon</title><link>https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon</guid><description>Run ai-phone on an Apple Silicon Mac and try a local SIP call before adding a paid carrier.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;ai-phone runs speech recognition, a language model and speech synthesis on an Apple Silicon Mac, per its README &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Start with a local SIP call. Its README says live-carrier acceptance checks remain pending &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;The repository requires macOS on Apple Silicon, Git, Homebrew and uv. It recommends 16 GB RAM for the default model, with a smaller option for 8 GB systems. Model downloads need several GB of disk space &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;clone-and-install-ai-phone&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01clone-and-install-ai-phone&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Clone and install ai-phone&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;clone-and-install-ai-phone&quot; aria-label=&quot;Copy link to step 1: Clone and install ai-phone&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The installer sets up Python dependencies and the native SIP library, per the README &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. SIP is the protocol used to connect the call.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; clone&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; https://github.com/oxnw/ai-phone.git&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ai-phone&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;./scripts/install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;choose-a-local-model-and-sip-address&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02choose-a-local-model-and-sip-address&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Choose a local model and SIP address&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;choose-a-local-model-and-sip-address&quot; aria-label=&quot;Copy link to step 2: Choose a local model and SIP address&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The setup wizard chooses call directions, model, line and voice &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. For the local call, enable incoming calls, select &quot;A SIP address&quot; and keep the name &lt;code&gt;agent&lt;/code&gt;, as the usage guide describes &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Choose the local model option to keep the conversation processing on the Mac &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ai-phone&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; setup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see prompts for those choices and model downloads &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. The usage guide says setup saves configuration and secrets under &lt;code&gt;~/.ai-phone/&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;start-the-phone-agent&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03start-the-phone-agent&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start the phone agent&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-the-phone-agent&quot; aria-label=&quot;Copy link to step 3: Start the phone agent&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The usage guide requires the daemon to stay running for incoming calls. Setup does not install a background service &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ai-phone&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the daemon state where the call&apos;s text will go when it starts, per the usage guide &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;call-it-from-another-terminal&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04call-it-from-another-terminal&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Call it from another terminal&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;call-it-from-another-terminal&quot; aria-label=&quot;Copy link to step 4: Call it from another terminal&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Keep the daemon running. In a second terminal, use the repository&apos;s local-call command &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;pjsua&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --local-port&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; 5070&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; sip:agent@127.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The guide describes this as a local call without a carrier. If you chose a different SIP name, substitute that name for &lt;code&gt;agent&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;You can now evaluate a local call before connecting a number. Telephone calls require a SIP trunk or carrier account, with charges. Audio travels over SIP/RTP. Choosing a remote language model sends conversation text to that provider &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;The published Phonon measurements cover local loopback calls with no carrier registration or external model &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/local-ai-phone-apple-silicon#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Treat them as the repository&apos;s local results when deciding what to try next.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>LOCALCALL</category><category>local-ai</category><category>ai-agents</category></item><item><title>Six AI coding tools, one for each job</title><link>https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job</guid><description>Cost, context, repo packing, browser debugging, diff review and PR review: one tool each, with the install line.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Don&apos;t install 20 AI coding tools. Pick one per job, use it for a week, then add the next. Here are six, with the install line for each from its own README.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; plugins and MCP servers can run code on your machine. Read what each one adds before you install it.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;know-what-you-spend-with-ccusage&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01know-what-you-spend-with-ccusage&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Know what you spend with ccusage&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;know-what-you-spend-with-ccusage&quot; aria-label=&quot;Copy link to step 1: Know what you spend with ccusage&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;ccusage reads Claude Code&apos;s local logs and shows your token use and cost &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Nothing to install, it runs through &lt;code&gt;npx&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ccusage@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see a table of usage by day, with tokens and an estimated cost for each.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;see-your-context-with-claude-hud&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02see-your-context-with-claude-hud&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;See your context with Claude HUD&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;see-your-context-with-claude-hud&quot; aria-label=&quot;Copy link to step 2: See your context with Claude HUD&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude HUD adds a status line to Claude Code that shows how full the context window is and what&apos;s running &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. It installs as a plugin. Inside Claude Code, run these one at a time:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add jarrodwatts/claude-hud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install claude-hud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/reload-plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/claude-hud:setup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the HUD appear at the bottom of the Claude Code screen.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;give-ai-the-whole-repo-with-repomix&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03give-ai-the-whole-repo-with-repomix&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Give AI the whole repo with Repomix&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;give-ai-the-whole-repo-with-repomix&quot; aria-label=&quot;Copy link to step 3: Give AI the whole repo with Repomix&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Repomix packs a repository into one file you can hand to any AI model &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. Run it in the repo&apos;s root:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; repomix@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see a new &lt;code&gt;repomix-output.xml&lt;/code&gt; in the current folder. To keep using it, &lt;code&gt;npm install -g repomix&lt;/code&gt; or &lt;code&gt;brew install repomix&lt;/code&gt; installs it for good &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;debug-in-real-chrome-with-chrome-devtools-mcp&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04debug-in-real-chrome-with-chrome-devtools-mcp&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Debug in real Chrome with Chrome DevTools MCP&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;debug-in-real-chrome-with-chrome-devtools-mcp&quot; aria-label=&quot;Copy link to step 4: Debug in real Chrome with Chrome DevTools MCP&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The Chrome DevTools MCP server lets Claude Code open Chrome, read the console and network, and check what it built &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; mcp&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; chrome-devtools&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; --scope&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; npx&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; chrome-devtools-mcp@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see &lt;code&gt;chrome-devtools&lt;/code&gt; listed when you type &lt;code&gt;/mcp&lt;/code&gt; in Claude Code.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-the-diff-with-lazygit&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05review-the-diff-with-lazygit&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review the diff with lazygit&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-the-diff-with-lazygit&quot; aria-label=&quot;Copy link to step 5: Review the diff with lazygit&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Before you commit what an agent wrote, read it. lazygit is a terminal UI for git that makes the diff quick to scan and stage &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job#source-5&quot; class=&quot;cite&quot; aria-label=&quot;Source 5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; lazygit&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;lazygit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Run &lt;code&gt;lazygit&lt;/code&gt; inside a git repository. You should see files, branches and the diff in panes.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;review-every-pr-with-claude-code-action&quot; data-step=&quot;6&quot;&gt;&lt;h2 id=&quot;06review-every-pr-with-claude-code-action&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;06&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Review every PR with Claude Code Action&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;review-every-pr-with-claude-code-action&quot; aria-label=&quot;Copy link to step 6: Review every PR with Claude Code Action&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;The Claude Code GitHub Action reviews pull requests and answers &lt;code&gt;@claude&lt;/code&gt; mentions &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;. The quickest setup is from Claude Code itself, as a repository admin:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/install-github-app&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;It walks you through installing the GitHub app and adding the secret. This path is for direct Anthropic API users; Bedrock, Vertex and Foundry have their own setup in the repo&apos;s docs &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/ai-coding-tools-one-per-job#source-6&quot; class=&quot;cite&quot; aria-label=&quot;Source 6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;That&apos;s one tool for each job. Add one this week and leave the rest until it earns its place.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>STACKPICK</category><category>dev-tools</category><category>cost-and-context</category><category>claude-code</category></item><item><title>Lock Claude Code out of your .env</title><link>https://fullbytedeveloper.com/blog/claude-code-env-lock</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-code-env-lock</guid><description>Four steps that stop Claude Code reading your secrets, and the check that proves it worked.</description><pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Claude Code can read your &lt;code&gt;.env&lt;/code&gt; file, and a line in &lt;code&gt;CLAUDE.md&lt;/code&gt; asking it not to won&apos;t stop it. These four steps do. I tested them on Claude Code 2.1.312 with fake keys only.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;start-it-in-your-project-folder&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01start-it-in-your-project-folder&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Start it in your project folder&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;start-it-in-your-project-folder&quot; aria-label=&quot;Copy link to step 1: Start it in your project folder&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code works from the folder you start it in. Start it in your project, not your home folder, so your other projects and dotfiles aren&apos;t in reach to begin with.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; ~/code/my-app&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see your project&apos;s path in the Claude Code header.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;add-deny-rules-to-settings-json&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02add-deny-rules-to-settingsjson&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Add deny rules to settings.json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;add-deny-rules-to-settings-json&quot; aria-label=&quot;Copy link to step 2: Add deny rules to settings.json&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Create &lt;code&gt;.claude/settings.json&lt;/code&gt; in the project (or add to it) and deny reads of your env files and key folders &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-env-lock#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Deny rules are checked before allow rules, and an allow rule can&apos;t make an exception to a deny rule. The file is strict JSON: no comments and no trailing commas &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-env-lock#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;json&quot; data-title=&quot;.claude/settings.json&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.claude/settings.json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-title=&quot;.claude/settings.json&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  &quot;permissions&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    &quot;deny&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;      &quot;Read(./.env)&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;      &quot;Read(./.env.*)&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;      &quot;Read(~/.ssh/**)&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;      &quot;Read(~/.aws/**)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Commit this file so everyone on the project gets the same rules. Deny rules apply right away, even before someone trusts the folder &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-env-lock#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;In my test, the Read tool was refused. You should see Claude Code report that reading &lt;code&gt;.env&lt;/code&gt; is denied by your settings.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;turn-on-the-sandbox&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03turn-on-the-sandbox&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Turn on the sandbox&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;turn-on-the-sandbox&quot; aria-label=&quot;Copy link to step 3: Turn on the sandbox&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Read deny rules cover Claude&apos;s own file tools and the shell commands Claude Code recognizes, such as &lt;code&gt;cat&lt;/code&gt;, &lt;code&gt;head&lt;/code&gt; and &lt;code&gt;tail&lt;/code&gt;. They don&apos;t cover a script that opens the file itself &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-env-lock#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. In my test, a short Python script still printed the fake keys past the deny rule.&lt;/p&gt;
&lt;p&gt;The sandbox fixes that at the operating system level &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-env-lock#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Add it to the same file:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;json&quot; data-title=&quot;.claude/settings.json&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.claude/settings.json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-title=&quot;.claude/settings.json&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  &quot;permissions&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    &quot;deny&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;      &quot;Read(./.env)&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;      &quot;Read(./.env.*)&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;      &quot;Read(~/.ssh/**)&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;      &quot;Read(~/.aws/**)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  &quot;sandbox&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    &quot;enabled&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    &quot;filesystem&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;      &quot;denyRead&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;./.env&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;~/.ssh&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;~/.aws&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Or type &lt;code&gt;/sandbox&lt;/code&gt; inside Claude Code to turn it on interactively. The sandbox works on macOS, Linux and WSL2. On Linux and WSL2 it needs two packages first &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-env-lock#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; apt-get&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; bubblewrap&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; socat&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; if the sandbox can&apos;t start, Claude Code runs commands without it unless you also set &lt;code&gt;&quot;failIfUnavailable&quot;: true&lt;/code&gt; inside &lt;code&gt;&quot;sandbox&quot;&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-code-env-lock#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;With the sandbox on, the same Python script got &lt;code&gt;Permission denied&lt;/code&gt; in my test.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;check-that-it-worked&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04check-that-it-worked&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Check that it worked&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;check-that-it-worked&quot; aria-label=&quot;Copy link to step 4: Check that it worked&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Put a fake key in &lt;code&gt;.env&lt;/code&gt;, then ask Claude Code to read it, both directly and through a script.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;API_KEY=fake-123&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; .env&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;claude&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;text&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;text&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Read .env and tell me what API_KEY is.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Run: python3 -c &quot;print(open(&apos;.env&apos;).read())&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see the first request refused by your deny rule and the second fail with &lt;code&gt;Permission denied&lt;/code&gt;. Type &lt;code&gt;/permissions&lt;/code&gt; to see every rule that&apos;s active.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;rotate-any-key-it-already-saw&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05rotate-any-key-it-already-saw&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Rotate any key it already saw&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;rotate-any-key-it-already-saw&quot; aria-label=&quot;Copy link to step 5: Rotate any key it already saw&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;If Claude Code read a real &lt;code&gt;.env&lt;/code&gt; before you did this, treat those keys as exposed. Create new keys in each provider&apos;s dashboard, put them in &lt;code&gt;.env&lt;/code&gt;, and revoke the old ones. The rules above stop the next read; they can&apos;t undo an earlier one.&lt;/p&gt;
&lt;p&gt;Your &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;~/.ssh&lt;/code&gt; and &lt;code&gt;~/.aws&lt;/code&gt; are now off limits to Claude Code&apos;s tools and to anything it runs in the sandbox.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>ENVLOCK</category><category>security</category><category>claude-code</category></item><item><title>Where each Claude Code instruction belongs</title><link>https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong</link><guid isPermaLink="true">https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong</guid><description>CLAUDE.md can&apos;t enforce never. Hooks, skills, rules and subagents can, and here is when to use each.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Your &lt;code&gt;CLAUDE.md&lt;/code&gt; says &quot;never do X&quot;, and Claude can still do X. &lt;code&gt;CLAUDE.md&lt;/code&gt; is guidance; hooks are enforced. Here&apos;s where each kind of instruction belongs, per the Claude Code docs.&lt;/p&gt;
&lt;section class=&quot;step&quot; id=&quot;keep-claude-md-to-facts&quot; data-step=&quot;1&quot;&gt;&lt;h2 id=&quot;01keep-claudemd-to-facts&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Keep CLAUDE.md to facts&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;keep-claude-md-to-facts&quot; aria-label=&quot;Copy link to step 1: Keep CLAUDE.md to facts&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Put the facts Claude needs in every session in &lt;code&gt;CLAUDE.md&lt;/code&gt;: build commands, conventions, project layout. The docs say to target under 200 lines, because longer files use more context and reduce how well Claude follows them &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Everything below moves out of it.&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;md&quot; data-title=&quot;CLAUDE.md&quot; data-block=&quot;1&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;CLAUDE.md&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;1&quot; aria-label=&quot;Copy code block 1&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;md&quot; data-title=&quot;CLAUDE.md&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;# my-app&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;- Build: npm run build&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;- Test: npm test&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;- API code lives in src/api, UI in src/ui&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;block-a-never-with-a-pretooluse-hook&quot; data-step=&quot;2&quot;&gt;&lt;h2 id=&quot;02block-a-never-with-a-pretooluse-hook&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Block a never with a PreToolUse hook&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;block-a-never-with-a-pretooluse-hook&quot; aria-label=&quot;Copy link to step 2: Block a never with a PreToolUse hook&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;A hook runs your script before a tool call. If the script exits with code 2, the call is blocked and whatever it wrote to stderr goes back to Claude as the reason &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;. Add this to &lt;code&gt;.claude/settings.json&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;json&quot; data-title=&quot;.claude/settings.json&quot; data-block=&quot;2&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.claude/settings.json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;2&quot; aria-label=&quot;Copy code block 2&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-title=&quot;.claude/settings.json&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  &quot;hooks&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    &quot;PreToolUse&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;        &quot;matcher&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;Edit|Write&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;        &quot;hooks&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;          {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;            &quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;command&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;            &quot;command&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;\&quot;$CLAUDE_PROJECT_DIR\&quot;/.claude/hooks/protect-files.sh&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Then the script, at &lt;code&gt;.claude/hooks/protect-files.sh&lt;/code&gt;. Change the pattern to whatever must never be edited:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-title=&quot;.claude/hooks/protect-files.sh&quot; data-block=&quot;3&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.claude/hooks/protect-files.sh&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;3&quot; aria-label=&quot;Copy code block 3&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-title=&quot;.claude/hooks/protect-files.sh&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-muted)&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;jq&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &apos;.tool_input.file_path // empty&apos;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;$file&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt; in&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  *&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;.env&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;|*&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;.env.&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;*|*&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;package-lock.json&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; &quot;Blocked: $file is protected&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt; &gt;&amp;#x26;2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    exit&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; 2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;    ;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;esac&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; 0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;bash&quot; data-block=&quot;4&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;bash&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;4&quot; aria-label=&quot;Copy code block 4&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; +x&lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt; .claude/hooks/protect-files.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The script needs &lt;code&gt;jq&lt;/code&gt; (&lt;code&gt;brew install jq&lt;/code&gt; on macOS). You should see Claude report &quot;Blocked&quot; when it tries to edit a protected file.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;run-an-always-with-a-posttooluse-hook&quot; data-step=&quot;3&quot;&gt;&lt;h2 id=&quot;03run-an-always-with-a-posttooluse-hook&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Run an always with a PostToolUse hook&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;run-an-always-with-a-posttooluse-hook&quot; aria-label=&quot;Copy link to step 3: Run an always with a PostToolUse hook&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;For &quot;always do Y after edits&quot;, run it after the tool instead of asking for it. This formats every file Claude edits, from the docs&apos; own example &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-2&quot; class=&quot;cite&quot; aria-label=&quot;Source 2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;json&quot; data-title=&quot;.claude/settings.json&quot; data-block=&quot;5&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.claude/settings.json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;5&quot; aria-label=&quot;Copy code block 5&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-title=&quot;.claude/settings.json&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;  &quot;hooks&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;    &quot;PostToolUse&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;        &quot;matcher&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;Edit|Write&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;        &quot;hooks&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;          {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;            &quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;command&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--amber)&quot;&gt;            &quot;command&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--string)&quot;&gt;&quot;jq -r &apos;.tool_input.file_path&apos; | xargs npx prettier --write&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You should see edited files come back formatted without asking.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;turn-a-procedure-into-a-skill&quot; data-step=&quot;4&quot;&gt;&lt;h2 id=&quot;04turn-a-procedure-into-a-skill&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;04&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Turn a procedure into a skill&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;turn-a-procedure-into-a-skill&quot; aria-label=&quot;Copy link to step 4: Turn a procedure into a skill&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;A 30 line procedure doesn&apos;t belong in every session&apos;s context. Put it in a skill, which Claude loads only when it&apos;s needed &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. The folder name becomes the command:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;md&quot; data-title=&quot;.claude/skills/release/SKILL.md&quot; data-block=&quot;6&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.claude/skills/release/SKILL.md&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;6&quot; aria-label=&quot;Copy code block 6&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;md&quot; data-title=&quot;.claude/skills/release/SKILL.md&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;description: Release checklist. Use when the user asks to cut or publish a release.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;1. Run npm test and stop if anything fails.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;2. Bump the version in package.json.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;3. Update CHANGELOG.md with the merged pull requests.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;4. Tag the commit and push the tag.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Save it as &lt;code&gt;.claude/skills/release/SKILL.md&lt;/code&gt;. The &lt;code&gt;---&lt;/code&gt; must be the file&apos;s first line, or Claude Code won&apos;t read the frontmatter &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-3&quot; class=&quot;cite&quot; aria-label=&quot;Source 3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;. You should see &lt;code&gt;/release&lt;/code&gt; when you type &lt;code&gt;/&lt;/code&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;scope-a-rule-to-one-folder&quot; data-step=&quot;5&quot;&gt;&lt;h2 id=&quot;05scope-a-rule-to-one-folder&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;05&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Scope a rule to one folder&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;scope-a-rule-to-one-folder&quot; aria-label=&quot;Copy link to step 5: Scope a rule to one folder&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;A rule that only matters in one part of the repo goes in &lt;code&gt;.claude/rules/&lt;/code&gt; with a &lt;code&gt;paths&lt;/code&gt; list, so it only loads when Claude works on matching files &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;md&quot; data-title=&quot;.claude/rules/api.md&quot; data-block=&quot;7&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.claude/rules/api.md&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;7&quot; aria-label=&quot;Copy code block 7&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;md&quot; data-title=&quot;.claude/rules/api.md&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;paths:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;  - &quot;src/api/**/*.ts&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;# API rules&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;- Every endpoint validates its input.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;- Use the standard error response format.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Save it as &lt;code&gt;.claude/rules/api.md&lt;/code&gt;. Rules without &lt;code&gt;paths&lt;/code&gt; load at the start of every session &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-1&quot; class=&quot;cite&quot; aria-label=&quot;Source 1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&quot;step&quot; id=&quot;hand-deep-work-to-a-subagent&quot; data-step=&quot;6&quot;&gt;&lt;h2 id=&quot;06hand-deep-work-to-a-subagent&quot; class=&quot;step-title&quot;&gt;&lt;span class=&quot;step-num&quot; aria-hidden=&quot;true&quot;&gt;06&lt;/span&gt;&lt;span class=&quot;step-text&quot;&gt;Hand deep work to a subagent&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;step-link&quot; data-step-link=&quot;hand-deep-work-to-a-subagent&quot; aria-label=&quot;Copy link to step 6: Hand deep work to a subagent&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/h2&gt;
&lt;p&gt;Long searches and log analysis fill the main context with noise. A subagent does the work in its own context window and returns only the result &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. Save this as &lt;code&gt;.claude/agents/log-reader.md&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;code-window&quot; data-lang=&quot;md&quot; data-title=&quot;.claude/agents/log-reader.md&quot; data-block=&quot;8&quot;&gt;&lt;figcaption class=&quot;code-bar&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;.claude/agents/log-reader.md&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;copy-btn&quot; data-copy=&quot;8&quot; aria-label=&quot;Copy code block 8&quot;&gt;&lt;span class=&quot;copy-icon&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-copy&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;i-check&quot;&gt;&lt;path d=&quot;M20 6 9 17l-5-5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;copy-label&quot;&gt;&lt;span class=&quot;l-idle&quot;&gt;Copy&lt;/span&gt;&lt;span class=&quot;l-done&quot; aria-hidden=&quot;true&quot;&gt;Copied&lt;/span&gt;&lt;/span&gt;&lt;/button&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code fullbyte-paper&quot; style=&quot;background-color:#F2F2F2;color:var(--paper-ink); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;md&quot; data-title=&quot;.claude/agents/log-reader.md&quot; data-numbered=&quot;&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;name: log-reader&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;description: Reads long logs and test output and reports only the errors and their likely cause.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;tools: Read, Grep, Glob&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;Read the logs you are pointed at. Report each distinct error once, with the file and line,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--paper-ink)&quot;&gt;and one sentence on the likely cause. Do not paste whole logs back.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Only &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;description&lt;/code&gt; are required &lt;sup&gt;&lt;a href=&quot;https://fullbytedeveloper.com/blog/claude-md-where-instructions-belong#source-4&quot; class=&quot;cite&quot; aria-label=&quot;Source 4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;. You should see Claude hand log questions to &lt;code&gt;log-reader&lt;/code&gt; and get a short summary back.&lt;/p&gt;
&lt;p&gt;Your &lt;code&gt;CLAUDE.md&lt;/code&gt; is now short, the nevers are enforced by a hook, and everything else loads only when it&apos;s needed.&lt;/p&gt;&lt;/section&gt;</content:encoded><category>WHEREPUT</category><category>claude-code</category></item></channel></rss>