<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: GBTI Network</title>
    <description>The latest articles on DEV Community by GBTI Network (@gbti).</description>
    <link>https://dev.to/gbti</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1032106%2F377a8530-0de6-474a-a5ca-beaccd087af9.png</url>
      <title>DEV Community: GBTI Network</title>
      <link>https://dev.to/gbti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gbti"/>
    <language>en</language>
    <item>
      <title>/FARLEY : An Agent Skill for Remembering People</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Fri, 18 Sep 2026 00:04:37 +0000</pubDate>
      <link>https://dev.to/gbti-network/new-prompt-published-by-493193064467267594-farley-an-agent-skill-for-remembering-people-409g</link>
      <guid>https://dev.to/gbti-network/new-prompt-published-by-493193064467267594-farley-an-agent-skill-for-remembering-people-409g</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/atwellpub"&gt;@atwellpub&lt;/a&gt;, &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;GBTI Network Supporter&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/prompts/farley-file-skill-for-claude-code/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This Claude Code skill offers your agent an &lt;code&gt;/farley&lt;/code&gt; command that helps keep track of memorable data you learn about the people you meet. This is for those who network with many people and would like to be able to record and recall details that may otherwise slip the memory.&lt;/p&gt;

&lt;p&gt;The name comes from James Farley, Franklin Roosevelt's campaign manager and later Postmaster General, who kept a file on everyone the two of them met: family, work, the last conversation. Before a return visit he read it, and a man who had shaken his hand once, a year earlier, got asked about a family member by name.&lt;/p&gt;

&lt;p&gt;I came across this concept while reading Robert Heinlein's &lt;em&gt;Double Star&lt;/em&gt;, where an actor stands in for a politician and survives the handshakes because the politician's staff keeps exactly that file. Heinlein named it after Farley, and the 1956 novel is how most people who keep one first heard of the idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;/farley&lt;/code&gt; takes a mode as its first word, and &lt;code&gt;/farleyfile&lt;/code&gt; is the same skill under a second name.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/farley &amp;lt;name&amp;gt; &amp;lt;notes&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates or updates that person's dossier, logs the meeting, and tags it. Plain sentences work: &lt;code&gt;/farley Met Tom Ruiz at the fundraiser, his wife is Ana&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/farley brief &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reads the notes back as a pre-meeting brief: names, last conversation, open threads, what to raise, what to avoid.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/farley search &amp;lt;query&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Finds people by text (&lt;code&gt;fly fishing&lt;/code&gt;) or by tag (&lt;code&gt;tag:role/donor tag:place/austin&lt;/code&gt;). Local only, plain grep.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/farley research &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Searches the web for their public footprint and records confirmed findings with sources, in their own section.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/farley list&lt;/code&gt;, &lt;code&gt;/farley autotag&lt;/code&gt;, &lt;code&gt;/farley init&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Everyone on file; re-tag one dossier or all of them; set where the file lives.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;~/.claude/skills/farley/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Save the file below into it as &lt;code&gt;SKILL.md&lt;/code&gt;. That is the whole skill.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;/farley init&lt;/code&gt;. It asks where the dossiers should live, creates the folder, and writes &lt;code&gt;config.json&lt;/code&gt;. Pick somewhere outside every git repository.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;/farley&lt;/code&gt; and it shows you the menu.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The skill file
&lt;/h2&gt;

&lt;p&gt;Save this as &lt;code&gt;~/.claude/skills/farley/SKILL.md&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;farley&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="s"&gt;Keep the Farley File: a private set of notes about people and organizations the user knows or works with.&lt;/span&gt;
  &lt;span class="s"&gt;Invoke for "/farley" or "/farleyfile" with any of: init, list, search &amp;lt;search&amp;gt;, research &amp;lt;name&amp;gt;,&lt;/span&gt;
  &lt;span class="s"&gt;autotag [name], brief &amp;lt;name&amp;gt;, or a name followed by notes. Also for "add this to the farley file",&lt;/span&gt;
  &lt;span class="s"&gt;"I just met &amp;lt;name&amp;gt;", "note that &amp;lt;name&amp;gt; works with ...", "brief me on &amp;lt;name&amp;gt;", or "who do we&lt;/span&gt;
  &lt;span class="s"&gt;know who ...". Stores one Markdown record per person or organization, adds useful tags, searches&lt;/span&gt;
  &lt;span class="s"&gt;those records, and looks up public professional information on the web only when asked. With no&lt;/span&gt;
  &lt;span class="s"&gt;arguments it asks what the user wants. Works from any project directory; the storage location is&lt;/span&gt;
  &lt;span class="s"&gt;set once with "/farley init".&lt;/span&gt;
&lt;span class="na"&gt;allowed-tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Bash, Read, Write, Edit, Glob, Grep, WebSearch, WebFetch&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;


&lt;span class="gh"&gt;# /farley: the Farley File&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;A Farley File is a private set of notes about people and organizations the user knows or works with. It keeps useful context from real interactions, such as roles, interests, past conversations, shared work, associates, and follow-ups. Before meeting again, the user can review the record so the conversation can pick up where it left off.&lt;span class="sb"&gt;


`/farleyfile`&lt;/span&gt; is the same skill under a second name.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Storage&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gs"&gt;**Markdown is the only place the notes are stored.**&lt;/span&gt; Each person or organization gets a folder
with one Markdown record. The user may keep related material beside it, such as a business card,
meeting notes, or a document. There is no database or background service. Search uses plain text.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;&amp;lt;root&amp;gt;/
  jane-doe/
    jane-doe.md            the record (the only file that holds data)
    (optional related files: business cards, meeting notes, documents)
&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;The location of &lt;span class="sb"&gt;`&amp;lt;root&amp;gt;`&lt;/span&gt; is the one setting, kept in &lt;span class="sb"&gt;`config.json`&lt;/span&gt; beside this file:
&lt;span class="sb"&gt;`{"root": "&amp;lt;absolute path&amp;gt;"}`&lt;/span&gt;. &lt;span class="gs"&gt;**Init**&lt;/span&gt; writes it and nothing else does.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Step 0: find the Farley File folder (every command)&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;Read &lt;span class="sb"&gt;`config.json`&lt;/span&gt;. Its &lt;span class="sb"&gt;`root`&lt;/span&gt; value is the folder every command reads and writes, no matter which
project is open. Below, &lt;span class="sb"&gt;`&amp;lt;root&amp;gt;`&lt;/span&gt; means that folder. Use the full path in commands because shell
variables do not carry between calls.&lt;span class="sb"&gt;


&lt;/span&gt;If &lt;span class="sb"&gt;`config.json`&lt;/span&gt; is missing, has no &lt;span class="sb"&gt;`root`&lt;/span&gt;, or the folder no longer exists, tell the user no
Farley File folder is set, run &lt;span class="gs"&gt;**Init**&lt;/span&gt; first, then carry on with what they asked for.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Pick the command from `$ARGUMENTS`&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;The first word decides. A person who happens to be named "List" is written as &lt;span class="sb"&gt;`/farley brief List`&lt;/span&gt;
or with notes after the name.&lt;span class="sb"&gt;


&lt;/span&gt;| Arguments | What to do |
|---|---|
| empty | &lt;span class="gs"&gt;**Ask.**&lt;/span&gt; Ask what the user wants to do. |
| &lt;span class="sb"&gt;`init`&lt;/span&gt; | &lt;span class="gs"&gt;**Init.**&lt;/span&gt; Set or change the storage location. |
| &lt;span class="sb"&gt;`list`&lt;/span&gt; | &lt;span class="gs"&gt;**List.**&lt;/span&gt; Every name on file. |
| &lt;span class="sb"&gt;`search &amp;lt;search&amp;gt;`&lt;/span&gt; | &lt;span class="gs"&gt;**Search.**&lt;/span&gt; Find records by text or &lt;span class="sb"&gt;`tag:`&lt;/span&gt;. Local only. |
| &lt;span class="sb"&gt;`research &amp;lt;name&amp;gt; [focus]`&lt;/span&gt; | &lt;span class="gs"&gt;**Research.**&lt;/span&gt; Look up relevant public professional information. |
| &lt;span class="sb"&gt;`autotag [name]`&lt;/span&gt; | &lt;span class="gs"&gt;**Autotag.**&lt;/span&gt; Re-tag one record, or every record when no name is given. |
| &lt;span class="sb"&gt;`brief &amp;lt;name&amp;gt;`&lt;/span&gt;, &lt;span class="sb"&gt;`prep &amp;lt;name&amp;gt;`&lt;/span&gt;, or a bare name | &lt;span class="gs"&gt;**Brief.**&lt;/span&gt; Read the record back for a meeting. |
| a name plus information about them, or a plain sentence | &lt;span class="gs"&gt;**Record.**&lt;/span&gt; Create or update the record. |&lt;span class="sb"&gt;


&lt;/span&gt;If a command is missing what it needs (&lt;span class="sb"&gt;`/farley search`&lt;/span&gt;, for example), ask only for the missing
name or search terms.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Ask&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;Do nothing else yet. Reply with a short question asking who or what this is about, and show the
menu so the user can answer in one line:&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;Who is this about, and what should I do?
  &amp;lt;name&amp;gt; &amp;lt;notes&amp;gt;            record what you learned
  brief &amp;lt;name&amp;gt;              read a record back before a meeting
  search &amp;lt;search&amp;gt;            find people by text, or by tag:place/austin
  research &amp;lt;name&amp;gt;           look up relevant public information
  autotag [name]            re-tag one record, or all of them
  list                      everyone on file
  init                      set where the Farley File lives
&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;End the turn there. Treat the user's next message as the arguments and pick the command from it.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Init&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="p"&gt;1.&lt;/span&gt; Read &lt;span class="sb"&gt;`config.json`&lt;/span&gt;.
&lt;span class="p"&gt;2.&lt;/span&gt; &lt;span class="gs"&gt;**A root is already set:**&lt;/span&gt; say where it is and how many records it holds. Ask with
   AskUserQuestion whether to keep it or change it. Keep ends here.
&lt;span class="p"&gt;3.&lt;/span&gt; &lt;span class="gs"&gt;**No root yet, or the user chose to change it:**&lt;/span&gt; ask for the location with AskUserQuestion.
   Offer the current working directory and &lt;span class="sb"&gt;`~/farley`&lt;/span&gt; as options; the user can type any other
   path through "Other".
&lt;span class="p"&gt;4.&lt;/span&gt; Normalize the answer: &lt;span class="sb"&gt;`~`&lt;/span&gt; expands to the home directory, and the result must be absolute. On WSL,
   a Windows path (&lt;span class="sb"&gt;`D:\Brain\farley`&lt;/span&gt;) becomes a WSL path with &lt;span class="sb"&gt;`wslpath -u`&lt;/span&gt;.
&lt;span class="p"&gt;5.&lt;/span&gt; Create the folder if needed (&lt;span class="sb"&gt;`mkdir -p`&lt;/span&gt;), and write &lt;span class="sb"&gt;`config.json`&lt;/span&gt; as
   &lt;span class="sb"&gt;`{"root": "&amp;lt;absolute path&amp;gt;"}`&lt;/span&gt;.
&lt;span class="p"&gt;6.&lt;/span&gt; &lt;span class="gs"&gt;**Changing from an old root that holds records:**&lt;/span&gt; ask whether to move them to the new location
   or leave them where they are. Move only on a yes, with &lt;span class="sb"&gt;`mv`&lt;/span&gt;, and never delete anything.
&lt;span class="p"&gt;7.&lt;/span&gt; Report the new location.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Step 1: find the person or organization (Record, Brief, Research, Autotag)&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="p"&gt;1.&lt;/span&gt; Make the &lt;span class="gs"&gt;**folder name**&lt;/span&gt; from the name: lowercase it, remove accents, titles and suffixes
   (Dr, Rep, Sen, Mr, Ms, Jr, III), remove apostrophes and periods, and replace spaces with hyphens.
   &lt;span class="sb"&gt;`Dr. María O'Neil`&lt;/span&gt; becomes &lt;span class="sb"&gt;`maria-oneil`&lt;/span&gt;. &lt;span class="sb"&gt;`The Acme Foundation`&lt;/span&gt; becomes &lt;span class="sb"&gt;`acme-foundation`&lt;/span&gt;.
&lt;span class="p"&gt;2.&lt;/span&gt; Look for an existing record before creating one. Check the folder list, then the &lt;span class="sb"&gt;`name:`&lt;/span&gt; and
   &lt;span class="sb"&gt;`aliases:`&lt;/span&gt; lines of every record, without caring about capitalization, so a nickname, alternate name, or first name
   alone still finds the right person:&lt;span class="sb"&gt;


&lt;/span&gt;   &lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;bash
&lt;/span&gt;   &lt;span class="nb"&gt;ls&lt;/span&gt; &amp;lt;root&amp;gt;
   &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-iE&lt;/span&gt; &lt;span class="s2"&gt;"^(name|aliases):"&lt;/span&gt; &amp;lt;root&amp;gt;/&lt;span class="k"&gt;*&lt;/span&gt;/&lt;span class="k"&gt;*&lt;/span&gt;.md 2&amp;gt;/dev/null
   &lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="p"&gt;3.&lt;/span&gt; Decide:
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="gs"&gt;**One clear match:**&lt;/span&gt; use it.
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="gs"&gt;**No match:**&lt;/span&gt; Record creates &lt;span class="sb"&gt;`&amp;lt;folder-name&amp;gt;/&amp;lt;folder-name&amp;gt;.md`&lt;/span&gt; from the layout below. The other
     commands say no record exists and ask whether to start one. Never create an empty file.
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="gs"&gt;**Several plausible matches**&lt;/span&gt; (two Johns, or "Sarah" alone): ask with AskUserQuestion, listing
     each possible match with their role and last contact. Never guess and merge two people.
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="gs"&gt;**Same name, different person:**&lt;/span&gt; add a short identifying word to the folder name from what the
     notes give (&lt;span class="sb"&gt;`john-smith-austin`&lt;/span&gt;, &lt;span class="sb"&gt;`john-smith-acme`&lt;/span&gt;), and say so.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Record&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;Read the whole record first, then edit it in place. Never rewrite it from memory. A new record 
takes this shape, with the headings kept even when empty, so every file reads the same way:&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gh"&gt;```markdown
---
&lt;/span&gt;name: Jane Doe
aliases: []
type: person
relationship: how the user knows them, in a few words
first_met: 2026-09-16
last_contact: 2026-09-16
&lt;span class="gh"&gt;tags: []
---
&lt;/span&gt;

&lt;span class="gh"&gt;# Jane Doe&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## At a glance&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;One or two sentences: who they are and why they matter.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## About&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt; Role and organization:
&lt;span class="p"&gt;-&lt;/span&gt; Location:
&lt;span class="p"&gt;-&lt;/span&gt; Contact:
&lt;span class="p"&gt;-&lt;/span&gt; Relevant details:&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Associates&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Interests and preferences&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Background&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Topics and positions&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Connections&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Follow-ups&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Research&lt;/span&gt;&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Interaction log&lt;/span&gt;
&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;

**Sections.** Put each new fact under the heading where someone reviewing the record before a
meeting would expect to find it. Add a bullet and do not repeat something already recorded.
Only **Research** writes to the `Research` section.


**The interaction log** keeps a simple history of what happened. Add one entry per meeting or note,
**newest first**, directly under `## Interaction log`:


&lt;span class="p"&gt;```&lt;/span&gt;markdown
&lt;span class="gu"&gt;### 2026-09-16 · Rotary lunch, Austin&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; What was said, done or learned, in the user's own words where possible.
&lt;span class="p"&gt;-&lt;/span&gt; Anything they asked for, offered, or promised.
&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;

If the notes are not about a meeting (a fact heard secondhand, a correction), log it as
`### 2026-09-16 · Note` and name the source if the user gave one.


**Details at the top of the file.** Keep them current on every write: add new names or nicknames to
`aliases`, set `last_contact` to the date of the newest real interaction (not a secondhand note or
research), and set `first_met` only once. Keep `aliases` and `tags` as one-line lists
(`tags: [role/donor, place/austin]`) because the search commands read that format.


**Then tag it:** apply **Tags** to the record.


### Rules that keep the file trustworthy


- **Record only what the user supplied.** Do not infer, embellish, or fill gaps. The web is used
  only by **Research**, and only when the user invokes it.
- **Pronouns:** use the ones the user used. If none were given, write around them or use
  they/them. Never infer them from a name.
- **Absolute dates only.** Convert "yesterday", "last Tuesday", "next month" against today's date.
  If no meeting date is given, use today and say so in the reply.
- **Never delete a fact.** When new information contradicts old, write the new value and keep the
  old one beside it with its date: `Works at Dell (previously HP, noted 2026-03-02)`.
- **Keep uncertainty visible.** "I think she now works at UT" becomes
  `May now work at UT (unconfirmed)`.
- **Follow-ups are checkboxes.** Promises made in either direction become `- [ ] Send Tom the grant
  deadline (promised 2026-09-16)`. When the user reports one done, tick it and add the date; do
  not remove it.
- **Associates mentioned in the notes.** Colleagues, collaborators, assistants, contacts, and other
  associates mentioned in passing go under `Associates` or `Connections`. Give someone their
  own record only if the notes are substantially about them too, or the user asks. When both people
  have records, link the two records to each other (`[Ana Ruiz](../ana-ruiz/ana-ruiz.md)`) in each file's
  `Connections`.
- **Write no em-dashes** in any file this skill writes, per the global writing rule. Use commas,
  colons, parentheses or a new sentence. The `·` in log headings is fine.


Report briefly: the record path and whether it was **created** or **updated**, a few bullets of what
was added, the tags added, any conflicting information kept, any assumption made (for example, using
today when no date was given), and this person's open follow-ups. Do not repeat the whole record.


## Tags


Tags help the file answer questions like "who do I know who..." without a database. They are added
automatically on every **Record**, **Research** and **Autotag**; the user never has to ask.


**Tag format:** `group/value`, lowercase with hyphens: `place/travis-county`, `interest/fly-fishing`.


| Group | For | Examples |
|---|---|---|
| `role` | how they relate to the user or their work | `role/donor`, `role/volunteer`, `role/press`, `role/staff`, `role/elected-official` |
| `org` | organizations they belong to or lead | `org/literacy-council`, `org/dell` |
| `place` | where they live, work or are active, online communities included | `place/austin`, `place/district-7`, `place/reddit` |
| `event` | where the user met or saw them | `event/rotary-lunch`, `event/2026-literacy-gala` |
| `interest` | hobbies and passions | `interest/fly-fishing`, `interest/jazz` |
| `issue` | policy areas they care about or work on | `issue/school-funding`, `issue/water-rights` |


**Rules:**


1. **Reuse before inventing.** Read the tags already in use and pick an existing one when it fits,
   so `interest/fishing` does not gain a rival `interest/angling`:


   ```bash
   grep -h "^tags:" &amp;lt;root&amp;gt;/*/*.md | tr -d '[]' | tr ',' '\n' | sed 's/^tags://' | tr -d ' ' | sort -u
   ```


2. **Tag only what the record says.** Every tag must trace to a line in the file. Remove a tag
   only when the fact behind it is gone or superseded, and say so.
3. **Stay within these six tag groups.** If a tag fits none of them, it usually belongs in the notes instead.
4. **Never use sensitive personal information as a tag:** health, religion, ethnicity, sexual
   orientation, immigration status, political party, or anything similar. If the user chose to
   record such a fact, keep it only in the notes. Never make it a way to group or list people.
5. **A handful per record.** Tags that would match almost everyone on file (`place/texas` for a
   Texas office) add nothing; prefer the more specific one.


## List


Read the details at the top of every record and return **every** name, alphabetically, one per
line, with relationship and last contact after it, and the total at the end:


&lt;span class="p"&gt;```&lt;/span&gt;bash
grep -H -E "^(name|relationship|last_contact):" &lt;span class="nt"&gt;&amp;lt;root&amp;gt;&lt;/span&gt;/&lt;span class="ge"&gt;*/*&lt;/span&gt;.md
&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;

&lt;span class="p"&gt;```&lt;/span&gt;
Ana Ruiz · board member, Literacy Council · last contact 2026-08-30
Jane Doe · donor, Travis County · last contact 2026-09-16
2 people on file.
&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;

If the folder is empty, say so and offer to add someone.


## Search


Local only. This command never uses the web and never edits a record. It searches the Markdown files
on this machine with `grep`.


1. **Tag searches.** `tag:place/austin` finds records carrying that tag. Several `tag:` terms mean
   all of them (`tag:role/donor tag:place/austin`). The brackets match the whole tag, so
   `role/donor` does not also match `role/donor-major` (a `\b` boundary would):


   &lt;span class="p"&gt;```&lt;/span&gt;bash
   grep -lE "^tags:.&lt;span class="ge"&gt;*[[ ]role/donor[],]" &amp;lt;root&amp;gt;/*&lt;/span&gt;/&lt;span class="ge"&gt;*.md | xargs -r grep -lE "^tags:.*&lt;/span&gt;[[ ]place/austin[],]"
   &lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;

2. **Text searches.** Turn the search into a few obvious related words (`fish`, `fishing`,
   `angler`), and search every record with line numbers:


   &lt;span class="p"&gt;```&lt;/span&gt;bash
   grep -rinE "fish|angl" &lt;span class="nt"&gt;&amp;lt;root&amp;gt;&lt;/span&gt; --include='&lt;span class="err"&gt;*&lt;/span&gt;.md'
   &lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;

3. **Date and relationship searches.** Use the details at the top (`relationship`, `first_met`, `last_contact`)
   and dated log headings (`### YYYY-MM-DD`) for questions like "everyone I met in March" or "people
   I have not spoken to since spring". For "who knows Ana Ruiz", search for links to her record:
   `grep -l "ana-ruiz/ana-ruiz.md" &amp;lt;root&amp;gt;/*/*.md`.
4. Open the matching records and make sure each one really answers the search. Ignore accidental
   matches.
5. Return the most useful matches as a numbered list, at most 15 (say how many more there are):


   &lt;span class="p"&gt;```&lt;/span&gt;
&lt;span class="p"&gt;   1.&lt;/span&gt; Jane Doe (donor, Travis County; last contact 2026-09-16)
      Interested in fly fishing and mentioned going on the Llano with Tom.
      &lt;span class="nt"&gt;&amp;lt;root&amp;gt;&lt;/span&gt;/jane-doe/jane-doe.md:24
   &lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;

With no results, say so and suggest a broader search or a nearby tag already in use.


## Refresh tags (`autotag`)


`/farley autotag &amp;lt;name&amp;gt;` re-tags one record; `/farley autotag` re-tags every record. Use it after
the tag rules change, or to update older records that were created before tags were added.


1. Read the tags already in use, then each record in turn.
2. Apply **Tags** to its whole content. Add missing tags, reuse an existing tag when two tags mean the same thing, and
   remove only tags whose fact is gone.
3. Change nothing but the `tags:` line. Do not add this cleanup work to the interaction log.
4. Report per record what was added, merged or removed.


## Brief


Read the record and give a short pre-meeting brief:


1. **Who:** one line with their role, organization, how you know them, and when you first met.
2. **People to remember:** relevant associates, colleagues, assistants, collaborators, or contacts.
3. **Last time:** the date, place, and what you discussed.
4. **Open threads:** unfinished follow-ups, things they were waiting on, or upcoming work and events
   that are worth asking about.
5. **Talking points:** useful interests, preferences, and subjects connected to the relationship.


Draw only from the file. Anything taken from `Research` is labelled as coming from public sources.
If the file is thin, say so rather than padding the brief.


## Research


This command searches the web only when the user explicitly asks for it. It sends the person's name
and enough context to distinguish them from people with the same name.


1. **Find the record** (Step 1). With no record, ask for enough context to identify the right person,
   such as where they work, their role, organization, or how the user knows them, and whether to start
   a record for the results. Never search a bare name with no identifying context.
2. **Load web search:** `ToolSearch` with `select:WebSearch,WebFetch`.
3. **Collect useful context** from the record: organization, role, city, known associates, and
   events. Any focus given after the name (`research Jane Doe literacy work`) guides the searches.
4. **Search** using the name together with that context, and open the pages that look
   relevant.
5. **Confirm it is the right person.** A result counts only when it matches the name **and** at least
   one piece of that context. If you are not sure, report the possible match but do not add it to the
   record.
6. **Look only for relevant public information:** current role and work history, organizations and
   boards, public statements, news coverage, awards, published work, professional profiles, and
   public records connected to a public or professional role.
7. **Do not look for or record** a home address, personal phone number or email, date of birth,
   health information, personal finances, or private details about associates. Do not use
   people-search or data-broker sites, and do not try to get past a login or paywall.
   **People known only by a handle** (a Reddit or forum username): research only what they publish
   under that handle. Do not try to discover their real name. Do not assume the same handle on another
   site belongs to the same person unless the record already gives enough context to confirm it. If
   they publicly connect the handle to their own name, that link may be recorded.
   **Blocked sites:** WebFetch cannot reach reddit.com (old or new). Do not work around a block with
   curl or a browser; record that the site could not be read, and suggest the user paste or
   screenshot what they want kept.
8. **Write** confirmed findings as bullets under `## Research`, each with its source and date:


   &lt;span class="p"&gt;```&lt;/span&gt;markdown
&lt;span class="p"&gt;   -&lt;/span&gt; Chairs the Travis County Literacy Council board (&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Austin Chronicle&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://...&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;, retrieved 2026-09-16)
   &lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;

   Do not duplicate an existing bullet; when a finding updates one, keep both with their dates. Do
   not copy findings into the firsthand sections. If a finding contradicts something the user
   recorded, leave the firsthand fact alone and raise it in the reply.
9. **Log it** as `### 2026-09-16 · Web research` with one line: how many findings were added and the
   focus, if any. Do not change `last_contact`. Apply **Tags** (confirmed findings may add `org/`
   and `issue/` tags).
10. **Report:** say what was added and where it came from, which possible matches were left out and
    why, what was searched for but not found, and remind the user that the web searches were sent to
    a search provider.


## Privacy


These records contain private notes about real people and organizations, so keep them limited,
relevant, and local.


- Records stay on this machine. Never publish them as an Artifact, put them in Claude Docs,
  Google Drive or email, or commit them to a repository.
- **Research** is the only command that sends anything to the web, and only when the user asks for it.
- Never use sensitive personal information as a tag.
- Do not copy a record into another project or conversation unless the user asks.
- If the user asks to remove a record, confirm first, delete that folder, then say what was deleted.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resource shared in this post is a new prompt published by GBTI Network member Hudson Atwell. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Hudson Atwell's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;https://gbti.network/members/atwellpub/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>claudecode</category>
      <category>agentskills</category>
      <category>workflow</category>
      <category>notetaking</category>
    </item>
    <item>
      <title>The Turtle King: A look into the Turtly World of Jeff Bezos</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Wed, 16 Sep 2026 01:35:53 +0000</pubDate>
      <link>https://dev.to/gbti-network/the-turtle-king-a-look-into-the-turtly-world-of-jeff-bezos-318h</link>
      <guid>https://dev.to/gbti-network/the-turtle-king-a-look-into-the-turtly-world-of-jeff-bezos-318h</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/gbti"&gt;@gbti&lt;/a&gt;, &lt;a href="https://gbti.network/members/gbtilabs/" rel="noopener noreferrer"&gt;GBTI Network Supporter&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/articles/the-turtle-king-a-look-into-the-turtly-world-of-jeff-bezos/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In a world where billionaires and tech moguls are often likened to superheroes or visionary geniuses, Jeff Bezos, the founder of Amazon and space exploration company &lt;a href="https://www.blueorigin.com/" rel="noopener noreferrer"&gt;Blue Origin&lt;/a&gt;, has garnered a unique and somewhat whimsical comparison: the turtle.&lt;/p&gt;

&lt;p&gt;Bezos’ resemblance to other famous turtles has been a playful topic on &lt;a href="https://twitter.com/search?q=bezos%2Bturtle&amp;amp;src=typed_query" rel="noopener noreferrer"&gt;social media&lt;/a&gt;. We particularly like this rendition played by Dana Carvey in the movie &lt;a href="https://www.imdb.com/title/tt0295427/" rel="noopener noreferrer"&gt;The Master of Disgu&lt;/a&gt;&lt;a href="https://www.imdb.com/title/tt0295427/" rel="noopener noreferrer"&gt;i&lt;/a&gt;&lt;a href="https://www.imdb.com/title/tt0295427/" rel="noopener noreferrer"&gt;se&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Dana Carvey from the movie The Master of Disguise&lt;/p&gt;

&lt;p&gt;Listening to Jeff Bezos on the latest &lt;a href="https://www.youtube.com/watch?v=DcWqzZ3I2cY" rel="noopener noreferrer"&gt;Lex Fridman podcast&lt;/a&gt; you get a sense of how &lt;em&gt;tutrly&lt;/em&gt; Bezos really can be as you can easily imagine this highly interesting conversation being held with the famous turtle from the Pixar movie Finding Nemo:&lt;/p&gt;

&lt;p&gt;“Righteous! Righteous!” – Crush rides the East Aulstrailian Current, Finding Nemo&lt;/p&gt;

&lt;h2&gt;
  
  
  Leaning into the theme: The Blue Origin Coat of Arms
&lt;/h2&gt;

&lt;p&gt;Blue Origin’s coat of arms includes turtles reaching for the stars, symbolizing the company’s philosophy of steady progress in space exploration, mirroring a turtle’s journey.&lt;/p&gt;

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

&lt;p&gt;Image sourced from Blue Origin &lt;a href="https://cynthiashen.design/blue-origin/blue-origin-process/" rel="noopener noreferrer"&gt;brand audit&lt;/a&gt; by &lt;a href="https://cynthiashen.design/" rel="noopener noreferrer"&gt;Cynthia Shen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The coat of arms features a central shield with a graphical representation of Earth and space, flanked by two turtles looking upwards the celestial kingdom.&lt;/p&gt;

&lt;p&gt;Above the shield is a banner with the company’s motto, &lt;strong&gt;“Gradatim Ferociter”&lt;/strong&gt; which translates to &lt;em&gt;“Step by Step, Ferociously.”&lt;/em&gt; This coat of arms encapsulates Blue Origin’s mission and philosophy, with the turtles symbolizing steady, determined progress towards space exploration goals.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tortoise and the Hare
&lt;/h2&gt;

&lt;p&gt;In July of 2021, &lt;a href="https://twitter.com/TrungTPhan" rel="noopener noreferrer"&gt;Trung Phan&lt;/a&gt; a developer, writer, and podcaster, produced an &lt;a href="https://twitter.com/TrungTPhan/status/1416416608990294017" rel="noopener noreferrer"&gt;X/Twitter thread&lt;/a&gt; that highlighted the relationship between Elon Musk and Jeff Bezos and their mutual interest in space travel. Elon, musk noticed this thread, specially a tweet that highlighted a reference to the story &lt;a href="https://en.wikipedia.org/wiki/The_Tortoise_and_the_Hare" rel="noopener noreferrer"&gt;Tortoise and Hare&lt;/a&gt; in comparison to the Blue Origin strategy of approaching space travel, reading:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The lesson from “tortoise &amp;amp; hare” is not that tortoises are faster, but rather that hares should not be complacent&lt;/p&gt;

&lt;p&gt;— Elon Musk (&lt;a class="mentioned-user" href="https://dev.to/elonmusk"&gt;@elonmusk&lt;/a&gt;) &lt;a href="https://twitter.com/elonmusk/status/1438780252474560513?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;September 17, 2021&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Master’s Chamber
&lt;/h2&gt;

&lt;p&gt;Mackenzie Bezos, Jeff’s ex-wife, reportedly had &lt;a href="https://www.nationalenquirer.com/celebrity/jeff-bezos-shared-wifes-pillow-talk-with-mistress-lauren-sanchez/" rel="noopener noreferrer"&gt;turtle-themed dreams&lt;/a&gt; before their split, adding a surreal layer to the turtle motif in Bezos’ life.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“MacKenzie dreamt I redecorated the bedroom.”&lt;/p&gt;

&lt;p&gt;“I kept doing it and it got weirder and weirder and weirder. Until I was sewing stuffed turtles into the comforter.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.nationalenquirer.com/celebrity/jeff-bezos-shared-wifes-pillow-talk-with-mistress-lauren-sanchez/" rel="noopener noreferrer"&gt;https://www.nationalenquirer.com/celebrity/jeff-bezos-shared-wifes-pillow-talk-with-mistress-lauren-sanchez/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Jeff Bezos, intentional or coincidental, seems to lean into the appeal of the long-living turtle. And Jeff, in case you are reading this. This isn’t a bad thing at all. We can only hope and even request that we get more turtle content in the future.  &lt;/p&gt;

&lt;p&gt;For this reason, in the spirit of The Doors, we have lovingly dubbed Jeff Bezos the &lt;em&gt;Turtle King&lt;/em&gt;.&lt;/p&gt;




&lt;p&gt;Thanks for reading! Please leave your turtle-related comments below. 🐢&lt;/p&gt;

&lt;p&gt;If you like our content, please consider following us! If you like our free &lt;a href="https://github.com/gbti-labs" rel="noopener noreferrer"&gt;open-source assets&lt;/a&gt;, please give them a github star. We’re also happy to have lurkers on our Discord community where we manage our syndication network and curate together.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://twitter.com/gbti_network" rel="noopener noreferrer"&gt;X&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/gbti-labs" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.youtube.com/channel/UCh4FjB6r4oWQW-QFiwqv-UA" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The resource shared in this post is a new article published by GBTI Network member GBTI Network. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow GBTI Network's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/gbtilabs/" rel="noopener noreferrer"&gt;https://gbti.network/members/gbtilabs/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>entertainment</category>
    </item>
    <item>
      <title>Is our future full of MCP servers?</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Wed, 16 Sep 2026 01:35:50 +0000</pubDate>
      <link>https://dev.to/gbti-network/is-our-future-full-of-mcp-servers-54hg</link>
      <guid>https://dev.to/gbti-network/is-our-future-full-of-mcp-servers-54hg</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/atwellpub"&gt;@atwellpub&lt;/a&gt;, &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;GBTI Network Supporter&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/articles/is-our-future-full-of-mcp-servers/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;MCP stands for &lt;strong&gt;Model Context Protocol&lt;/strong&gt;, and recently the&amp;nbsp;&lt;a href="https://codeium.com/windsurf" rel="noopener noreferrer"&gt;Windsurf IDE&lt;/a&gt;&amp;nbsp;released a new feature to their &lt;a href="https://docs.codeium.com/windsurf/cascade" rel="noopener noreferrer"&gt;&lt;em&gt;Cascade&lt;/em&gt;&lt;/a&gt; agent that enables support for connecting the Claude 3.5 to MCP servers.&lt;/p&gt;

&lt;p&gt;The emergence of MCP servers in chat agents is still very new, but considering the current trajectory, there is a strong change that it could be very common in the near (and potentially distant) future. In this blog post I’ll share my thoughts about MCP and how it is already affecting the coding world as well as how it may affect the consumer and social aspects of the future.&lt;/p&gt;

&lt;p&gt;To begin with, let’s look at how it’s being used to code and by getting a quick introduction of what MCP servers are and how they are being incorporated in the Windsurf IDE, a LLM integrated fork of VS Code:  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/windsurf%5C_ai/status/1891664001941037123" rel="noopener noreferrer"&gt;https://twitter.com/windsurf\_ai/status/1891664001941037123&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/windsurf_ai/status/1891664001941037123" rel="noopener noreferrer"&gt;https://twitter.com/windsurf_ai/status/1891664001941037123&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; was introduced by &lt;a href="https://www.anthropic.com/news/model-context-protocol" rel="noopener noreferrer"&gt;Anthropic in November 2024&lt;/a&gt; as &lt;em&gt;“a new standard for connecting AI assistants to the systems where data lives, including content repositories, business tools, and development environments.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Following the launch of the MCP protocol, websites like &lt;a href="https://glama.ai/mcp/servers" rel="noopener noreferrer"&gt;glama.ai&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://mcp.so/" rel="noopener noreferrer"&gt;MCP.so,&lt;/a&gt;&amp;nbsp;emerged to support the documentation and accessibility of open-source MCP servers, making servers available for a wide variety of applications. These MCPs, numbering over 1,000 at the time of writing, are opening up LLM access to platforms such as Google Drive, Slack, GitHub, &lt;a href="https://glama.ai/mcp/servers/iwjvs2zy63" rel="noopener noreferrer"&gt;Clickup&lt;/a&gt;, WordPress, and many others.&lt;/p&gt;

&lt;p&gt;It may not be too long before the general public begins augmenting their own agent experiences with one-click MCP integrations that change the behavior of their agent experience.&lt;/p&gt;

&lt;p&gt;Some mainstream examples would be: joining influencer-owned shopping networks, brand-owned content networks, financial data API access, and even local community news and events; all for the prompting waiting in the background of a normal agent experience.&lt;/p&gt;

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

&lt;p&gt;If LLM-powered micro internets are not considered a brave enough new world. It becomes even braver when the models we use leverage UI frameworks to assemble shopping portals inside the model container.  &lt;/p&gt;

&lt;p&gt;But let’s bring it back to earth and away from the social and shopping-related examples and go to the more modern, pragmatic example. &lt;em&gt;How can it help make me a better coder, today?&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How can it help make me a better coder, today?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today, I am using the&amp;nbsp;&lt;a href="https://codeium.com/windsurf" rel="noopener noreferrer"&gt;Windsurf IDE&lt;/a&gt;&amp;nbsp;to work on the&amp;nbsp;&lt;a href="https://modrinth.com/organization/gbti-network" rel="noopener noreferrer"&gt;Traveler’s Series&lt;/a&gt; Minecraft mods, and it is not easy work. For the bulk of it I’ve had to hire a Java coder, but I still want to be able to use the model to improve the code base and tackle low hanging fruit; while saving our human talent for the tougher problems.  &lt;/p&gt;

&lt;p&gt;The difficulty with the above is that all the code is written in Java, and the&amp;nbsp;API docs&amp;nbsp;for Minecraft seem esoteric to me because I am not a Java developer and the game is very extensive. These docs are also on the web and cannot be downloaded as a zip, which makes access difficult. If I can somehow manage to create an MCP server to download and serve these docs directly to my agent, then I should be able to drastically improve the accuracy of the agent’s predictive capabilities.&lt;/p&gt;

&lt;p&gt;For this reason I have set out to create a MCP server that does just that, but it will take some hard work to get it produced. Once I have it ready, I will test it and confirm whether or not it improved my experience working with Java for Minecraft mod development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anthropic versus Open AI; MCPs versus “Plugins”
&lt;/h2&gt;

&lt;p&gt;One question I have is… did Anthropic risk their future by naming these addons “MCP”s? The upcoming generation Z might not be attracted to this nomenclature due to the technical aspect of it. ChatGPT did have a plugin’s marketplace, but they &lt;a href="https://help.openai.com/en/articles/8988022-winding-down-the-chatgpt-plugins-beta" rel="noopener noreferrer"&gt;retired it in April 2024&lt;/a&gt;, citing many of the plugin hosted were becoming redundant to features added to the model itself; which was causing complications.  &lt;/p&gt;

&lt;p&gt;The very reason MCPs are on my radar right now is because of the work Anthropic has done and my current favorite IDE adopting the standard.&lt;/p&gt;

&lt;p&gt;GPT 4o is integrated with the Windfall IDE, but it does not appear to share the MCP integration feature anthropic offers. I may be wrong here. Let me know in the comments if so.&lt;/p&gt;

&lt;p&gt;And while “plugins” seems like it would go far with the average consumer and “MCP” seems like it would go far only with developers. Yet, MCP appears to have no competition at all.  &lt;/p&gt;

&lt;p&gt;Anyway, I’m trying my luck at building a node-based local MPC server that will help me connect my local Windsurf IDE for massive gains in Minecraft modding. I don’t know if it will work, but its worth exploring.  &lt;/p&gt;

&lt;p&gt;And remember, it’s also always worth exploring the ways today’s technologies influence tomorrow’s consumer.  &lt;/p&gt;

&lt;p&gt;Thanks for paying attention and remember, a read is a leader!&lt;/p&gt;

&lt;p&gt;The resource shared in this post is a new article published by GBTI Network member Hudson Atwell. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Hudson Atwell's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;https://gbti.network/members/atwellpub/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>llms</category>
    </item>
    <item>
      <title>SavePoint Broadcasting Software</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Sun, 13 Sep 2026 00:35:17 +0000</pubDate>
      <link>https://dev.to/gbti-network/savepoint-broadcasting-software-422a</link>
      <guid>https://dev.to/gbti-network/savepoint-broadcasting-software-422a</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/atwellpub"&gt;@atwellpub&lt;/a&gt;, &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;GBTI Network Member&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/projects/savepoint-broadcasting-software/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;SavePoint Station Manager is a self-hosted desktop application for Windows, macOS, and Linux that lets communities, DJ collectives, indie podcast networks, and hobbyist broadcasters run their own 24/7 online radio or video station.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weekly programming schedule with automated content playout&lt;/li&gt;
&lt;li&gt;Live contributor slots delivered over RTMP, so co-hosts can tunnel into their allotted airtime from any studio setup (OBS or any RTMP encoder)&lt;/li&gt;
&lt;li&gt;Simulcast a single station's output to YouTube, Twitch, Kick, TikTok, Mixcloud, SoundCloud, Substack, X, Discord, and any RTMP endpoint you own&lt;/li&gt;
&lt;li&gt;Self-hosted by design. Your station runs on your own hardware and storage. No cloud lock-in, no per-listener fees, no shared logins for co-hosts&lt;/li&gt;
&lt;li&gt;Optional cloud backend for artist relay, permission workflows, scheduling coordination, and multi-user contributor access&lt;/li&gt;
&lt;li&gt;Pairs with Discord for community-driven station operation and always-on chat around the broadcast&lt;/li&gt;
&lt;li&gt;License management for community operators running multi-station deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Free version and free trial available. Paid tiers unlock a broadcast pass (Year Pass or subscription) for scaling stations.&lt;/p&gt;

&lt;p&gt;The resource shared in this post is a new project published by GBTI Network member Hudson Atwell. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Hudson Atwell's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;https://gbti.network/members/atwellpub/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>broadcasting</category>
      <category>livestreaming</category>
      <category>onlineradio</category>
      <category>discord</category>
    </item>
    <item>
      <title>How to always show Claude Code usage in the terminal</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Tue, 08 Sep 2026 01:55:27 +0000</pubDate>
      <link>https://dev.to/gbti-network/how-to-always-show-claude-code-usage-in-the-terminal-39m6</link>
      <guid>https://dev.to/gbti-network/how-to-always-show-claude-code-usage-in-the-terminal-39m6</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/atwellpub"&gt;@atwellpub&lt;/a&gt;, &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;GBTI Network Member&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/articles/how-to-always-show-claude-code-usage-in-the-terminal/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Recently I learned that you can modify Claude Code's terminal behavior directly, by dropping in a script of your own.&lt;/p&gt;

&lt;p&gt;The feature is called the &lt;a href="https://code.claude.com/docs/en/statusline" rel="noopener noreferrer"&gt;status line&lt;/a&gt;, and it is a supported part of Claude Code rather than a hack. You point a &lt;code&gt;statusLine&lt;/code&gt; setting at any shell script. Claude Code hands that script the session data as JSON on stdin on every render, and prints whatever the script prints in the bar at the bottom of the terminal.&lt;/p&gt;

&lt;p&gt;The payload carries &lt;code&gt;rate_limits&lt;/code&gt;, with your five hour and seven day windows, each as a used percentage and a reset time. So a script drop-in can put your model usage in the CLI permanently, visible while you work, instead of something you stop and ask for. Once it is in the bar you stop running &lt;code&gt;/usage&lt;/code&gt; to find out where you stand.&lt;/p&gt;

&lt;p&gt;Stefano Ginella (&lt;a href="https://github.com/stefanoginella" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://www.codeable.io/developers/stefano-ginella/?ref=MzT91" rel="noopener noreferrer"&gt;Codeable&lt;/a&gt;) wrote &lt;a href="https://gist.github.com/stefanoginella/ffe56f293baf6241abe74c3883082755" rel="noopener noreferrer"&gt;a single-file status line&lt;/a&gt; that does exactly this, and it is the one I installed:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe73n0mjxi9cn6e3d5duk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe73n0mjxi9cn6e3d5duk.webp" alt="The Claude Code status line rendering the model, effort level, context use, the five hour and seven day rate limit windows, and a daily budget figure" width="799" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading the first line from left to right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The model and its effort level&lt;/li&gt;
&lt;li&gt;How full the context window is&lt;/li&gt;
&lt;li&gt;The share of the five hour rate limit spent, and how long until it resets&lt;/li&gt;
&lt;li&gt;The same pair for the seven day limit&lt;/li&gt;
&lt;li&gt;A daily pace figure, written as today's spend against today's share of the week&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second line carries the session id, the project path, and the git branch.&lt;/p&gt;

&lt;p&gt;The daily figure is two numbers, both percentages of the seven day limit: what today has spent, and what today is allowed. The allowance is whatever is left of the week divided evenly across the days until the reset, so &lt;code&gt;D:10/24%&lt;/code&gt; means today has taken 10 percent against an even share of 24 percent. It turns yellow at 85 percent of that share and red past it. Going over is not forgiven. Tomorrow's share is recalculated from what is left, so a heavy day makes every day after it smaller.&lt;/p&gt;

&lt;p&gt;Right now the &lt;code&gt;rate_limits&lt;/code&gt; object is only present for Claude.ai Pro and Max subscribers, and only after the session's first API response. Before that first response arrives, and on any other plan, the field is simply not there. A script that reads it without checking will print an error into the bar instead of your usage, so it has to look first. None of this costs an API call either, because Claude Code is already handing the numbers to your script.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to install manually
&lt;/h2&gt;

&lt;p&gt;Save &lt;a href="https://gist.github.com/stefanoginella/ffe56f293baf6241abe74c3883082755" rel="noopener noreferrer"&gt;Stefano's script&lt;/a&gt; as &lt;code&gt;~/.claude/statusline/statusline.mjs&lt;/code&gt;, then add a &lt;code&gt;statusLine&lt;/code&gt; block to &lt;code&gt;~/.claude/settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"statusLine"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node /Users/you/.claude/statusline/statusline.mjs"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use your own absolute path. Putting it in &lt;code&gt;~/.claude/settings.json&lt;/code&gt; applies it everywhere; putting the same block in a project's &lt;code&gt;.claude/settings.json&lt;/code&gt; tries it on one repo first.&lt;/p&gt;

&lt;p&gt;If you run Claude Code inside VS Code, the status bar renders in terminal mode only. It does not appear in the sidebar chat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install it globally with one prompt
&lt;/h2&gt;

&lt;p&gt;Paste this into Claude Code and it will do the whole installation, including the parts that are easy to get wrong.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install Stefano Ginella's Claude Code status line for me, globally.

1. Create ~/.claude/statusline/ and download the script into it as statusline.mjs:
   https://gist.githubusercontent.com/stefanoginella/ffe56f293baf6241abe74c3883082755/raw/statusline.mjs
   Make it executable and run `node --check` on it before going further.

2. Read my existing ~/.claude/settings.json first, then MERGE a statusLine block
   into it. Do not overwrite the file and do not disturb any other key:

   "statusLine": { "type": "command", "command": "node &amp;lt;absolute path to that file&amp;gt;" }

   Use my real home directory in the command, not a tilde, and confirm the JSON
   still parses afterwards.

3. Prove it works before telling me it is done. Pipe a realistic payload into the
   script and show me the output, using a throwaway HOME so my real state files
   are untouched:

   HOME=$(mktemp -d) node ~/.claude/statusline/statusline.mjs &amp;lt;&amp;lt;'JSON'
   {"model":{"display_name":"Opus 5"},"effort":{"level":"high"},
    "session_id":"test","workspace":{"current_dir":"."},"cwd":".",
    "rate_limits":{"five_hour":{"used_percentage":20,"resets_at":9999999999},
                   "seven_day":{"used_percentage":15,"resets_at":9999999999}}}
   JSON

4. Tell me if the status line needs a restart to appear, and confirm you changed
   nothing else in my settings.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What it looks like once it is running
&lt;/h2&gt;

&lt;p&gt;Here is the same status line in a live session, sitting under the prompt in the VS Code terminal panel. The model and its effort level, the context window, both rate limit windows and the daily pace figure stay on screen while the work happens.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fajajo87vvo1t2ewvum2n.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fajajo87vvo1t2ewvum2n.webp" alt="Claude Code running in the VS Code terminal panel, with the status line at the bottom reading the model, context use, the five hour and seven day rate limit windows, and the daily pace figure" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Credit to Stefano Ginella for the script, and for writing it to run entirely offline. You can find his work on &lt;a href="https://github.com/stefanoginella" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, and he takes on client work through &lt;a href="https://www.codeable.io/developers/stefano-ginella/?ref=MzT91" rel="noopener noreferrer"&gt;Codeable&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; the Codeable links here are referral links. GBTI Network is a longstanding fan of the Codeable community for WordPress and React work.&lt;/p&gt;

&lt;p&gt;The resource shared in this post is a new article published by GBTI Network member Hudson Atwell. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Hudson Atwell's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;https://gbti.network/members/atwellpub/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>claudecode</category>
      <category>statusline</category>
      <category>ratelimits</category>
      <category>developertools</category>
    </item>
    <item>
      <title>/GROK : An Agent Skill for Narrative Summaries</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Thu, 27 Aug 2026 01:25:41 +0000</pubDate>
      <link>https://dev.to/gbti-network/grok-an-agent-skill-for-narrative-summaries-1o6p</link>
      <guid>https://dev.to/gbti-network/grok-an-agent-skill-for-narrative-summaries-1o6p</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/atwellpub"&gt;@atwellpub&lt;/a&gt;, &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;GBTI Network Member&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/prompts/grok-skill-for-claude-code/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Claude Code loads any markdown file at &lt;code&gt;.claude/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt; as a reusable slash command (a "skill"). This one gives your agent a &lt;code&gt;/grok&lt;/code&gt; command that takes its own last reply and re-tells it as two or three short paragraphs of plain narrative prose.&lt;/p&gt;

&lt;p&gt;The term "Grok" comes from Robert Heinlein's novel &lt;em&gt;Stranger in a Strange Land&lt;/em&gt;, where to "grok" something is to drink it deeply enough to essentially be one with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes it different from asking for a summary
&lt;/h2&gt;

&lt;p&gt;The skill is explicit that there are no new tool calls, no fresh research, and no findings that were not already in the previous reply. The /grok skill asks the agent to only consider the last reply. We are not asking it to QA its response, rather we just want it to rephrase it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asking the bot to summarize does not inform the bot &lt;em&gt;how&lt;/em&gt; to summarize or what the reader will consider valuable in a summary. This skill takes some of that extra definition off the plate of the operator (you).&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;.claude/skills/grok/&lt;/code&gt; in your repo, or &lt;code&gt;~/.claude/skills/grok/&lt;/code&gt; to have it in every project.&lt;/li&gt;
&lt;li&gt;Save the file below as &lt;code&gt;SKILL.md&lt;/code&gt; inside it.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;/grok&lt;/code&gt; in Claude Code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nothing to configure. Add a topic after the command (&lt;code&gt;/grok the migration part&lt;/code&gt;) to narrow it to one thread within the last reply.&lt;/p&gt;

&lt;h2&gt;
  
  
  The skill file
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;grok&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;"&lt;/span&gt;
  &lt;span class="s"&gt;Re-tell your own last reply as 2 or 3 short narrative paragraphs, so the point survives without the&lt;/span&gt;
  &lt;span class="s"&gt;scaffolding. Invoke for "/grok", or when the user asks you to say that again plainly, give them the&lt;/span&gt;
  &lt;span class="s"&gt;short version, or explain what it actually means. It re-expresses what you ALREADY said&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;no new&lt;/span&gt;
  &lt;span class="s"&gt;research, no tool calls, no fresh findings. Prose only, no headers, no bullets, no tables.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# /grok: say it again, as a story&lt;/span&gt;

Your last reply was structured for completeness. This one is structured for understanding. Take what you
just said and re-tell it in &lt;span class="gs"&gt;**2 or 3 short paragraphs of plain narrative prose**&lt;/span&gt;, as if explaining it to a
capable colleague who missed the detail and wants the shape of it.

&lt;span class="gu"&gt;## What to re-tell&lt;/span&gt;

&lt;span class="gs"&gt;**Your own previous reply, and nothing else.**&lt;/span&gt; Not the whole conversation, not the task, not a fresh look
at the code. If your last message was itself a &lt;span class="sb"&gt;`/grok`&lt;/span&gt; response, go back to the one before it. If the user
typed &lt;span class="sb"&gt;`/grok`&lt;/span&gt; with a topic after it, narrow to that thread within your last reply.

&lt;span class="gs"&gt;**Add nothing.**&lt;/span&gt; No new investigation, no tool calls, no findings that were not already in the reply. If
you notice something new while re-reading, that is a separate message, not part of the grok. The value
here is compression and clarity, and a grok that smuggles in fresh claims is neither.

If the last reply was already two plain paragraphs, say so and stop rather than paraphrasing it into
something worse. If there is no previous reply of yours to work from, say that instead of inventing one.

&lt;span class="gu"&gt;## How to write it&lt;/span&gt;

&lt;span class="gs"&gt;**Narrative means causal, not chronological.**&lt;/span&gt; Not "first this, then that." Say what was true, what that
caused, and what it means now. A reader should finish knowing the shape of the situation, not a list of
events. Lead with the thing that matters most, which is often the surprise, the reversal, or the decision
waiting on them, and let the rest hang off it.

&lt;span class="gs"&gt;**Strip the scaffolding, keep the load-bearing detail.**&lt;/span&gt; Out: file paths, line numbers, commit hashes,
counts, tables, headers, bullets, bold labels. In: any specific that carries the meaning. "The reconcile
bot published it overnight" needs no commit hash to land, but "nobody is on it" and "this breaks at the
$5 price" are the substance and must survive.

&lt;span class="gs"&gt;**Two or three paragraphs, short ones.**&lt;/span&gt; If it will not compress that far, the compression is the point:
choose what matters and drop the rest rather than writing four dense paragraphs. Plain sentences. No
em dashes or en dashes.

&lt;span class="gu"&gt;## What must survive the compression&lt;/span&gt;

These are the things a summary is most tempted to smooth away, and losing them makes the grok actively
worse than the reply it replaced:
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**Anything waiting on the user.**&lt;/span&gt; A pending decision, an unanswered question, a required approval. If
  they read only the grok, they must still know what is theirs to do.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Corrections and reversals.**&lt;/span&gt; If the last reply corrected an earlier claim, admitted an error, or
  withdrew something, that stays. Narrative flow is not a reason to quietly drop the part where you were
  wrong.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Uncertainty, as uncertainty.**&lt;/span&gt; What was unverified stays unverified. Never let compression promote a
  hedge into a fact; "this looks like" must not become "this is".
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Bad news.**&lt;/span&gt; A failure, a live bug, a thing that did not work. If the reply led with a problem, the
  grok leads with it too.

A grok that reads better than the reply because it left out the awkward parts is a failure, not a success.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resource shared in this post is a new prompt published by GBTI Network member Hudson Atwell. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Hudson Atwell's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;https://gbti.network/members/atwellpub/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>claudecode</category>
      <category>agentskills</category>
      <category>writing</category>
      <category>summarization</category>
    </item>
    <item>
      <title>Ryker: In-Browser Visual Editor for HTML and Markdown with agent-ready change exports</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Sun, 23 Aug 2026 15:53:39 +0000</pubDate>
      <link>https://dev.to/gbti/ryker-turn-html-and-markdown-edits-into-agent-ready-change-requests-3o6c</link>
      <guid>https://dev.to/gbti/ryker-turn-html-and-markdown-edits-into-agent-ready-change-requests-3o6c</guid>
      <description>&lt;p&gt;HTML has become an increasingly useful format for working with large language models.&lt;/p&gt;

&lt;p&gt;Models can generate complete HTML documents very quickly, but editing those documents manually can still be awkward.&lt;/p&gt;

&lt;p&gt;HTML is normally edited through source code. That works well for development, but it is not always the best way to proofread a document, move content around, or make small editorial changes.&lt;/p&gt;

&lt;p&gt;We built &lt;strong&gt;Ryker&lt;/strong&gt; to make that process easier.&lt;/p&gt;

&lt;p&gt;Ryker is a Chrome extension for visually editing HTML and Markdown while recording the changes you make as prompt-ready change requests.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;p&gt;You make the edits directly to the document.&lt;/p&gt;

&lt;p&gt;Ryker records what changed as a text blob of machine-readable change requests. &lt;/p&gt;

&lt;p&gt;When you are finished proofreading, you can hand those changes back to your agent for implementation.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/o0HQG7Ie5zY"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;That workflow influenced most of the feature decisions behind Ryker. The goal is not to replace the agent or permanently modify the source behind its back. The goal is to give you a more natural way to review the document while still allowing the agent to handle the final implementation.&lt;/p&gt;

&lt;p&gt;Ryker supports two primary workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edit any live HTML page directly in the browser.&lt;/li&gt;
&lt;li&gt;Load HTML and Markdown files from your hard drive into Ryker for inline editing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you work, Ryker records those edits so they can be exported as a prompt-ready change request.&lt;/p&gt;

&lt;p&gt;You can learn more about Ryker and install the Chrome extension here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gbti.network/products/ryker/" rel="noopener noreferrer"&gt;https://gbti.network/products/ryker/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>html</category>
      <category>markdown</category>
      <category>writing</category>
    </item>
    <item>
      <title>Upwork will now take a job post from your AI agent</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Fri, 14 Aug 2026 02:50:56 +0000</pubDate>
      <link>https://dev.to/gbti-network/upwork-will-now-take-a-job-post-from-your-ai-agent-3m1p</link>
      <guid>https://dev.to/gbti-network/upwork-will-now-take-a-job-post-from-your-ai-agent-3m1p</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/gbti"&gt;@gbti&lt;/a&gt;, &lt;a href="https://gbti.network/members/gbtilabs/" rel="noopener noreferrer"&gt;GBTI Network Member&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/articles/upwork-mcp-server-agents-hiring-humans/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On August 10, 2026, Upwork announced a server for the Model Context Protocol. An agent can now post a job, shortlist freelancers, prepare an offer and summarize proposals as they arrive, without anyone opening a browser tab.&lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Before getting to why Upwork built one, the protocol itself needs explaining. An MCP server resembles a REST API, and Upwork's sits on the same APIs its website and public API already use.&lt;sup id="fnref2"&gt;2&lt;/sup&gt; The difference is who does the calling. A REST endpoint waits for code a developer wrote against its documentation. An MCP server publishes a typed list of what it can do, things like searching jobs, sending a message or creating a milestone, and the assistant, the agent app you added the server to, puts that list in front of the model, then makes whichever calls the model picks. No page is fetched, nothing is rendered, no human clicks anything, and the result lands in the conversation you are already having. Think of an MCP server as an extension to the assistant rather than to the model: the model arrives able to converse, and the server gives the assistant a set of things it can now do on your behalf.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/petersanborn1/" rel="noopener noreferrer"&gt;Peter Sanborn&lt;/a&gt;, Upwork's chief business officer, described what prompted it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We started seeing something remarkable this year: AI agents attempting to log into Upwork on their users' behalf to search for the right person to hire.&lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A marketplace watched software try to get in through the front door and decided to install a door.&lt;/p&gt;

&lt;h2&gt;
  
  
  Any MCP-compatible assistant can reach the Upwork server
&lt;/h2&gt;

&lt;p&gt;The announcement names Claude, ChatGPT and Cursor, then adds "any MCP-compatible product."&lt;sup id="fnref1"&gt;1&lt;/sup&gt; The documentation goes further, listing Claude on web, desktop and Code, Cursor and Codex in app and CLI form, and naming Windsurf, Cline, VS Code and Goose as examples of anything else that speaks remote MCP with OAuth.&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Upwork's documentation gives &lt;code&gt;claude.ai/directory/connectors/upwork&lt;/code&gt; as the recommended install path, with a ChatGPT listing still to come.&lt;sup id="fnref2"&gt;2&lt;/sup&gt; That address is not a public page. It opens Claude's own connector directory inside the app, where the entry credits Upwork as the developer and exposes 46 tools under names like &lt;code&gt;upwork__find_freelancers&lt;/code&gt;, &lt;code&gt;upwork__confirm_draft&lt;/code&gt; and &lt;code&gt;upwork__end_contract&lt;/code&gt;.&lt;sup id="fnref3"&gt;3&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5f8prvmczoqy3u9efywa.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5f8prvmczoqy3u9efywa.webp" alt="The Upwork entry in Claude's connector directory, labelled Community, listing 46 tools" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anthropic files it under &lt;strong&gt;Community&lt;/strong&gt; rather than verified, noting that community connectors "have undergone automated reviews" and "may not yet meet the quality tier of verified connectors". The notice beside it reads "Only use connectors from developers you trust. Anthropic does not control which tools developers make available and cannot verify that they will work as intended or that they won't change."&lt;sup id="fnref3"&gt;3&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Every Upwork account gets it free, but your assistant plan may block it
&lt;/h2&gt;

&lt;p&gt;Upwork's MCP server is open to every Upwork user at no additional cost: "available today for every Upwork client and freelancer, at no additional cost."&lt;sup id="fnref1"&gt;1&lt;/sup&gt; The documentation says the same, that it is "free to use with any Upwork account."&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;ChatGPT offers custom MCP connectors on Plus, Pro, Team, Business and Enterprise, which leaves a free ChatGPT account unable to add the Upwork server at all; a Claude free account can add it, but only as its one permitted connector; and ChatGPT's Instant mode cannot make MCP tool calls whatever the plan.&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;On the marketplace side, universal availability decides who benefits. A capability that ships to everyone at once and costs nothing confers no advantage by being adopted, only on people who restructure how they work around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the agent can do: mostly administration, plus one delivery step
&lt;/h2&gt;

&lt;p&gt;The announcement lists the prompts it expects:&lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"My prototype is almost ready to launch. Help me find a freelancer on Upwork who can test it end-to-end before it goes live."&lt;/li&gt;
&lt;li&gt;"I'm launching a new ecommerce product and need help with paid acquisition. Post a job to Upwork and summarize proposals as they arrive."&lt;/li&gt;
&lt;li&gt;"Show me this week's jobs that match my skills and fit my budget and availability."&lt;/li&gt;
&lt;li&gt;"Summarize my Upwork client messages and flag which ones need a follow-up today."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three of the four are administration. Finding, posting, summarizing, triaging. The agent handles the paperwork around the work rather than the work.&lt;/p&gt;

&lt;p&gt;The documentation covers a third role the announcement skips. Alongside clients and freelancers, agencies get a team-wide view: one call returning every member's invitations, offers, messages and contracts.&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;One capability does touch delivery. A freelancer can submit milestone work through the connector.&lt;sup id="fnref2"&gt;2&lt;/sup&gt; With job posting, proposal review and client messaging already inside the agent, the only steps reserved for a person are the binding ones, and a pipeline running from brief to delivered work without anyone opening a browser starts to look like a question of policy rather than plumbing.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a client is meant to de-risk the expert they pick
&lt;/h2&gt;

&lt;p&gt;Upwork's answer is identity and money. Every connection runs through an authenticated account, and the company leans on its existing identity verification, escrow and dispute protections.&lt;sup id="fnref1"&gt;1&lt;/sup&gt; Those cover fraud and non-delivery, and they say nothing about whether the three names in front of you are the right three. We read the documentation looking for the ranking inputs and they are not disclosed: a client can "Pull up ranked profiles" and "review proposals received, with ranked summaries", and the page never names Job Success Score, Top Rated, or any other quality signal Upwork already publishes.&lt;sup id="fnref2"&gt;2&lt;/sup&gt; The word doing the work is "ranked", and nothing says ranked by what.&lt;/p&gt;

&lt;p&gt;The controls on the agent itself are documented far better than the ones on the shortlist. Every write action is drafted for separate confirmation, binding financial actions complete on upwork.com rather than inside the agent, and connecting nonetheless "grants the full set of scopes", so there is no way to attach an agent to job search while withholding messaging, contracts or financial history.&lt;sup id="fnref2"&gt;2&lt;/sup&gt; Rohit Singh, founder of Populosof and one of two customers quoted in the announcement, put the upside plainly: "every action that changes anything is previewed and requires my explicit confirmation."&lt;sup id="fnref1"&gt;1&lt;/sup&gt; So a client de-risks the transaction and picks the expert on trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are AI Agents Themselves Able to Shop On Upwork?
&lt;/h2&gt;

&lt;p&gt;Upwork's FAQ asks whether an AI agent can hire on your behalf without you, which is the client side of the question, and answers: "Not today. In the current release, a person confirms every binding action."&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Read the hedge. "Not today" and "in the current release" are the words of a company that has thought about the other version and has not shipped it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does the affiliate program work with MCP?
&lt;/h2&gt;

&lt;p&gt;Upwork's affiliate program pays 70% of a new client's first contract spend, capped at $150, tracked through the Impact platform with a cookie window measured in weeks.&lt;sup id="fnref4"&gt;4&lt;/sup&gt; Every part of that mechanism assumes a browser. A link is clicked, a cookie is set, a signup is attributed.&lt;/p&gt;

&lt;p&gt;An MCP conversation runs directly between the agent and the server, so the browser, the click and the cookie that mechanism depends on never come into existence. A founder who asks Claude to post a job and hires someone that afternoon leaves no referral trail, so whoever recommended Upwork in the first place is invisible to the attribution system.&lt;/p&gt;

&lt;p&gt;Will Anthropic and OpenAI demand a share of the profit? There are arguments for it, most certainly, however there does not seem to be any sign of merchants needing to register with large language models for commission sharing. It is not a crazy model. We would break off a point for the right of representation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an agent-driven marketplace means for a vetted network like Codeable
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; the &lt;a href="https://gbti.network/outbound/codeable" rel="noopener noreferrer"&gt;Codeable&lt;/a&gt; link here is a referral link. GBTI Network is a big fan of the Codeable community for React and WordPress work.&lt;/p&gt;

&lt;p&gt;Codeable is a closed talent network that accepts roughly 2.2% of applicants, where a client brief goes to a small group of pre-vetted experts who discuss it in a shared workroom and independently estimate, and the platform returns one averaged fixed price against a 17.5% fee.&lt;sup id="fnref5"&gt;5&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;A network like Codeable has several reasons to publish an MCP server of its own, and they are mostly the reasons Upwork did. A connector puts a vetted talent pool inside the tools its best clients already work in. It makes that same pool reachable by the network's own contractors, who could assemble a team on demand instead of routing it through a coordinator. A devops lead could pipe work straight to the embedded developer they already trust, without rebuilding the relationship each time there is something to do. And every party keeps agentic help for the transactional layer, the scoping and scheduling and status chasing, which is the part none of them wanted to be doing by hand.&lt;/p&gt;

&lt;p&gt;Cover photograph by Polina Zimmerman on Pexels.&lt;sup id="fnref6"&gt;6&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The resource shared in this post is a new article published by GBTI Network member GBTI Network. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow GBTI Network's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/gbtilabs/" rel="noopener noreferrer"&gt;https://gbti.network/members/gbtilabs/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Upwork Inc., "Upwork Talent Is Now Everywhere AI Works," press release via GlobeNewswire, August 10, 2026. Source of the launch date, the example prompts, the escrow and dispute language, and the quotes from Sanborn and from Singh, who is one of two customers quoted; the other is Allison Lee. Sanborn's linked profile was opened and confirmed on August 13, 2026: &lt;a href="https://www.globenewswire.com/news-release/2026/08/10/3342153/0/en/upwork-talent-is-now-everywhere-ai-works.html" rel="noopener noreferrer"&gt;globenewswire.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;Upwork, "Upwork MCP Server," product documentation dated August 4, 2026, read in a browser on August 12, 2026; the page returns 403 to non-browser clients. Source of the compatible-agent list, the capability sets, the draft-confirm and binding-actions rules, the per-assistant plan requirements, the full-scopes line, the same-APIs comparison and the FAQ answers quoted above. It says "ranked profiles" and "ranked summaries" and names no quality signal anywhere on the page, neither Job Success Score nor Top Rated: &lt;a href="https://www.upwork.com/ai/mcp" rel="noopener noreferrer"&gt;upwork.com/ai/mcp&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;Claude connector directory, Upwork entry, captured on August 13, 2026 from a signed-in session and supplied by the author. The one claim here resting on a logged-in view: the directory is served inside the application and the address returns 403 to signed-out clients, so the screenshot above is the evidence rather than a link anyone can follow. Source of the Community label and its notice, the "Developed by Upwork" credit, the disclaimer, and the stated count of 46 tools, of which eight are visible.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;Published summaries of the Upwork affiliate program, read August 12, 2026. Source of the 70% first-contract commission, the $150 cap and the Impact platform. Reported cookie windows vary by link type and none of these figures appears on Upwork's own affiliate page, so the window is given as a range. The conclusion drawn about MCP attribution is ours: &lt;a href="https://www.upwork.com/affiliates" rel="noopener noreferrer"&gt;upwork.com/affiliates&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;Codeable, "Codeable vs Upwork," read August 12, 2026, for "roughly 2.2% of applicants are accepted" and the fixed 17.5% fee on hourly rates of $80 to $120: &lt;a href="https://www.codeable.io/blog/codeable-vs-upwork/" rel="noopener noreferrer"&gt;codeable.io/blog/codeable-vs-upwork&lt;/a&gt;. The workroom and the averaged estimate are described on the company's how-it-works page.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn6"&gt;
&lt;p&gt;Cover photograph, "Person Holding Black And Silver Laptops", by Polina Zimmerman on Pexels, used under the &lt;a href="https://www.pexels.com/license/" rel="noopener noreferrer"&gt;Pexels License&lt;/a&gt;: &lt;a href="https://www.pexels.com/photo/person-holding-black-and-silver-laptops-3747130/" rel="noopener noreferrer"&gt;pexels.com/photo/3747130&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>mcp</category>
      <category>aiagents</category>
      <category>upwork</category>
      <category>freelancing</category>
    </item>
    <item>
      <title>App Clips let someone use part of your iOS app without installing it</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Wed, 12 Aug 2026 03:20:35 +0000</pubDate>
      <link>https://dev.to/gbti-network/app-clips-let-someone-use-part-of-your-ios-app-without-installing-it-930</link>
      <guid>https://dev.to/gbti-network/app-clips-let-someone-use-part-of-your-ios-app-without-installing-it-930</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/gbti"&gt;@gbti&lt;/a&gt;, &lt;a href="https://gbti.network/members/gbtilabs/" rel="noopener noreferrer"&gt;GBTI Network Member&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/articles/ios-app-clips-what-they-are-and-who-uses-them/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We came across &lt;strong&gt;App Clips&lt;/strong&gt; recently and realized how little we knew about them beyond the name. An App Clip runs part of an iOS app with no install: the person never visits the App Store, downloads anything, or creates an account. They do the one thing they came to do and move on, and the software removes itself later without being asked.&lt;/p&gt;

&lt;p&gt;App Clips have existed since iOS 14 in 2020, and Apple is still adding to them, most recently in June 2025.&lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;An App Clip is a second, smaller build of an app that already exists, made from the same project and sharing that app's code.&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;That smaller build compiles down to its own binary, and that is what makes an install unnecessary: someone runs the clip without installing the full app, and the system removes it from the device after a period of inactivity.&lt;sup id="fnref3"&gt;3&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Everything depends on that binary staying small, so &lt;a href="https://developer.apple.com/documentation/appclip/choosing-the-right-functionality-for-your-app-clip" rel="noopener noreferrer"&gt;the size limit&lt;/a&gt; is the constraint that decides what an App Clip can be. It varies by iOS version and by how the clip is launched: 10 MB on iOS 15 and earlier, 15 MB on iOS 16 and earlier. iOS 17 raises the ceiling to 100 MB, but only for clips launched digitally, from a website or Spotlight, and never from an App Clip Code, a QR code, or an NFC tag. The one route that keeps those physical launches at 100 MB is the demo link App Store Connect generates.&lt;/p&gt;

&lt;p&gt;If a tapped link can run part of an app, it is fair to wonder what stops any link from running anything. Apple reviews every app on the store, and a clip ships as part of one.&lt;sup id="fnref4"&gt;4&lt;/sup&gt; Launching one is governed separately and checked every time: a developer has to prove they own the domain a link points at, by publishing a file on it that names the App Clip allowed to launch from there.&lt;sup id="fnref5"&gt;5&lt;/sup&gt; It is the same mechanism behind a link that opens an app instead of a browser page.&lt;/p&gt;

&lt;p&gt;Which leaves the question of whether a clip is a substitute for an app or an addition to one. Apple settles it by requiring the full app to contain everything the clip offers, so a clip is a way to hand someone the useful part of an app before they commit to the rest.&lt;sup id="fnref6"&gt;6&lt;/sup&gt; People can reach one eight different ways, from a QR code or an NFC tag to a link shared in Messages.&lt;sup id="fnref7"&gt;7&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it is used in the real world
&lt;/h2&gt;

&lt;p&gt;The public record here is thin, but named deployments exist, and they sort into three kinds: reached at a physical place, sent to someone who is not the customer, and offered as a trial.&lt;/p&gt;

&lt;h3&gt;
  
  
  ExxonMobil
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://appleinsider.com/articles/22/12/11/what-happened-to-apples-app-clips" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;ExxonMobil&lt;/strong&gt;&lt;/a&gt; put tap to pay at the pump in 2020, one of the examples Apple advertised from day one. The &lt;strong&gt;Apple Store&lt;/strong&gt; used a barcode scan in its own stores to pull up accessory details in 2021, and &lt;a href="https://www.heady.io/blog/the-app-clips-playbook-5-inspiring-examples-teardowns" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;ParkWhiz&lt;/strong&gt;&lt;/a&gt; put an NFC tag at the spot so someone could pay without installing anything. &lt;strong&gt;Panera Bread&lt;/strong&gt; sits off to the side of this group: its ordering flow comes through Apple Maps rather than something you scan.&lt;/p&gt;

&lt;h3&gt;
  
  
  SignEasy
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SignEasy&lt;/strong&gt; lets someone sign a document that was sent to them, with no install required of the signer. &lt;strong&gt;Parcel&lt;/strong&gt; tracks a single package from a shared link. &lt;strong&gt;Flash Note Cards&lt;/strong&gt; makes and shares cards inside a conversation.&lt;sup id="fnref8"&gt;8&lt;/sup&gt; None of those people are the customer. They were handed a thing and needed to deal with it, the strongest argument for the whole feature, and not the one Apple leads with.&lt;/p&gt;

&lt;h3&gt;
  
  
  Elloveo
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Elloveo&lt;/strong&gt;, a free trial of a children's science app, is the single early example on record.&lt;sup id="fnref8"&gt;8&lt;/sup&gt; It is also the kind of use Apple has invested in most recently, which is what the June 2025 demo work is for.&lt;/p&gt;

&lt;p&gt;What every one of them shares, across all three kinds, is that the task happens to finish in about a minute, a pattern in what has been built so far, not a limit Apple sets.&lt;/p&gt;

&lt;p&gt;No source reports an install lift, a conversion rate, or a completion figure for any of them. We looked specifically for outcomes: a search for App Clip campaign results returns marketing case studies about other things entirely, and a search for App Clip business results returns mobile-ordering and micromobility material with no App Clips in it. We would rather report that absence than dress up unrelated statistics as evidence.&lt;/p&gt;

&lt;p&gt;Both sources are dated: the Heady teardown is from March 2021 and the AppleInsider piece is from December 2022.&lt;sup id="fnref8"&gt;8&lt;/sup&gt;&lt;sup id="fnref9"&gt;9&lt;/sup&gt; Nothing comparable has surfaced since.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it might fit next
&lt;/h2&gt;

&lt;p&gt;Picture the same kind of task wherever it lands next: a diner ordering without installing anything, a driver tapping to pay at the pump, someone trying one level of a game before deciding whether to buy the rest. An App Clip fits a task that small and that self-contained, and stops fitting the moment it needs to remember who you are or run while nobody is looking, both hard platform limits.&lt;/p&gt;

&lt;p&gt;The case worth watching is try before you buy on the devices carrying a LiDAR scanner. This already works inside a full app: point the camera at the room and the sofa appears at true scale, sitting behind the coffee table rather than floating in front of it. As an App Clip the same thing would run straight from the product page, with nothing installed and nothing left behind once the decision is made.&lt;/p&gt;

&lt;p&gt;Two constraints decide where that works. LiDAR narrows the audience to the devices that have it, so accurate placement is an enhancement rather than the whole experience. And while putting a sofa in your living room sounds like the in-person scenario App Clips were sold on, the 100 MB ceiling belongs to clips launched digitally, and a 3D model is heavy. The door that fits is the product page rather than a code printed on a showroom tag, unless the clip ships through the demo link, which is the one physical route Apple allows the larger budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tell us what it was like
&lt;/h2&gt;

&lt;p&gt;If you have built an App Clip, or scoped one and decided against it, the useful part is what documentation never captures: what App Store Connect was like to configure, whether people found the thing at all, whether it moved installs or replaced them, and what you would not do again. A report that it was not worth building is as useful as one that it was.&lt;/p&gt;

&lt;p&gt;Leave a comment, or bring it to Discord if it turns into a longer conversation.&lt;/p&gt;

&lt;p&gt;Cover photograph by Douglas Mendes on Pexels.&lt;sup id="fnref10"&gt;10&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The resource shared in this post is a new article published by GBTI Network member GBTI Network. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow GBTI Network's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/gbtilabs/" rel="noopener noreferrer"&gt;https://gbti.network/members/gbtilabs/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Apple, "App Clips updates," Apple Developer Documentation, read August 10, 2026. The June 2025 entry covers demo App Clips, the autogenerated demo URL, and Background Assets: &lt;a href="https://developer.apple.com/documentation/updates/appclips" rel="noopener noreferrer"&gt;developer.apple.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;Apple, "Creating an App Clip with Xcode," Apple Developer Documentation, read August 10, 2026. Source of the target-based architecture and the guidance to share code between the App Clip and the full app rather than duplicate it, refactoring to modular, shared code "to avoid duplicating code": &lt;a href="https://developer.apple.com/documentation/appclip/creating-an-app-clip-with-xcode" rel="noopener noreferrer"&gt;developer.apple.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;Apple, "App Clips," Apple Developer Documentation, read August 10, 2026. Source of the inactivity-removal behavior: &lt;a href="https://developer.apple.com/documentation/appclip" rel="noopener noreferrer"&gt;developer.apple.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;Apple, "App Review Guidelines," Apple Developer Documentation, re-read August 11, 2026. Source of the review requirement: "every app is reviewed by experts." The document names App Clips twice, requiring that "all App Clip features and functionality must be included in the main app binary" and that they carry no advertising. It does not say when review happens, so no timing is claimed above: &lt;a href="https://developer.apple.com/app-store/review/guidelines/" rel="noopener noreferrer"&gt;developer.apple.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;Apple, "Supporting associated domains," Apple Developer Documentation, read August 10, 2026. Source of the &lt;code&gt;apple-app-site-association&lt;/code&gt; file format and the &lt;code&gt;appclips&lt;/code&gt; key that authorizes a domain to launch a given App Clip: &lt;a href="https://developer.apple.com/documentation/xcode/supporting-associated-domains" rel="noopener noreferrer"&gt;developer.apple.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn6"&gt;
&lt;p&gt;Apple, "Choosing the right functionality for your App Clip," Apple Developer Documentation, read August 10, 2026. Source of the size ceiling, the demo-link conditions, the requirement that "the full app must include the same functionality as the App Clip," and the background and privacy limits: &lt;a href="https://developer.apple.com/documentation/appclip/choosing-the-right-functionality-for-your-app-clip" rel="noopener noreferrer"&gt;developer.apple.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn7"&gt;
&lt;p&gt;Apple, "Configuring App Clip experiences," Apple Developer Documentation, read August 10, 2026. Source of the eight invocation methods: &lt;a href="https://developer.apple.com/documentation/appclip/configuring-the-launch-experience-of-your-app-clip" rel="noopener noreferrer"&gt;developer.apple.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn8"&gt;
&lt;p&gt;Heady, "The App Clips Playbook: 5 Inspiring Examples and Teardowns," March 17, 2021. Source of the ParkWhiz, SignEasy, Parcel, Elloveo, and Flash Note Cards examples. Notably it reports no outcome figures for any of them: &lt;a href="https://www.heady.io/blog/the-app-clips-playbook-5-inspiring-examples-teardowns" rel="noopener noreferrer"&gt;heady.io&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn9"&gt;
&lt;p&gt;Lila Riesen, "What happened to Apple's App Clips," AppleInsider, December 11, 2022. Source of the ExxonMobil, Apple Store, and Panera Bread examples: &lt;a href="https://appleinsider.com/articles/22/12/11/what-happened-to-apples-app-clips" rel="noopener noreferrer"&gt;appleinsider.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn10"&gt;
&lt;p&gt;Cover photograph by Douglas Mendes on Pexels, used under the &lt;a href="https://www.pexels.com/license/" rel="noopener noreferrer"&gt;Pexels License&lt;/a&gt;: &lt;a href="https://www.pexels.com/photo/close-up-of-an-iphone-keyboard-laptop-and-airpods-lying-on-a-desk-14666034/" rel="noopener noreferrer"&gt;pexels.com/photo/14666034&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>ios</category>
      <category>mobile</category>
      <category>appclips</category>
      <category>apple</category>
    </item>
    <item>
      <title>AirLLM runs a 70B model on a 4GB GPU by refusing to load it all at once</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Wed, 12 Aug 2026 01:05:36 +0000</pubDate>
      <link>https://dev.to/gbti-network/airllm-runs-a-70b-model-on-a-4gb-gpu-by-refusing-to-load-it-all-at-once-i5</link>
      <guid>https://dev.to/gbti-network/airllm-runs-a-70b-model-on-a-4gb-gpu-by-refusing-to-load-it-all-at-once-i5</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/gbti"&gt;@gbti&lt;/a&gt;, &lt;a href="https://gbti.network/members/gbtilabs/" rel="noopener noreferrer"&gt;GBTI Network Member&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/articles/airllm-large-models-on-small-gpus/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Most advice about running a large language model locally starts with the same gate: check your VRAM, then pick a model that fits inside it. A 70B model in half precision wants roughly 140GB, so the usual answer is to quantize it down, distill it, prune it, or accept a smaller model.&lt;/p&gt;

&lt;p&gt;AirLLM takes a different position. It argues the gate is an artifact of how models are loaded, not a law of the hardware.&lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;A transformer runs one layer at a time. Layer 1 produces an output, that output feeds layer 2, and so on to the end. At the moment layer 40 is computing, layers 1 through 39 have already done their work and layers 41 onward have not started. Nothing requires all of them to be sitting in VRAM simultaneously. It is simply convenient, and until recently there was little reason to arrange things otherwise.&lt;/p&gt;

&lt;p&gt;AirLLM shards the model to disk and loads each layer as its turn arrives, then releases it. Peak VRAM stops tracking the size of the model and starts tracking the size of its largest single layer. The project's headline claim follows from that: 70B inference on a single 4GB card, with no quantization, distillation, or pruning involved.&lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Two details do the practical work. Weights are read through memory-mapped files, so a layer does not need a full copy in system RAM on its way to the GPU. And a prefetch thread pulls layer N plus one from disk while the GPU is still working on layer N, which the project measured at roughly a ten percent improvement over loading strictly in sequence.&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;For sparse mixture-of-experts models the same reasoning goes further. A token routes to a small number of experts, so AirLLM streams individual experts rather than whole layers. The project reports Kimi K3, at 2.8 trillion parameters, running in 3.72GB of VRAM measured end to end on a single RTX 6000 Ada.&lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;This is where a careful reading matters, because the framing invites a misunderstanding.&lt;/p&gt;

&lt;p&gt;AirLLM does not make a 70B model fast on a 4GB card. It makes a 70B model possible on a 4GB card. Every layer crosses the disk-to-GPU boundary on every forward pass, which as one write-up puts it converts a memory bottleneck into a disk bottleneck, feasible only because an NVMe drive reading at several gigabytes per second can keep the GPU fed at reduced throughput.&lt;sup id="fnref3"&gt;3&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The most useful framing we found comes from Umesh Malik, who points out that the floor is arithmetic rather than opinion. A 70B model in half precision is roughly 140GB, and every token has to pull all of it past the GPU, so the storage bandwidth alone sets a minimum: about 20 seconds per token on a 7GB/s Gen4 NVMe, about 40 on Gen3, and around 255 seconds on a SATA SSD. Those are pure transfer floors that assume zero compute and zero overhead. Quantizing to 4-bit cuts the bytes per token to roughly 35GB and the Gen4 floor to about 5 seconds.&lt;sup id="fnref4"&gt;4&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazr2fw4otnqlm2xuut7y.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazr2fw4otnqlm2xuut7y.webp" alt="An NVMe SSD beside mechanical hard drives and an optical disc" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reported speeds from people who ran it vary enough that the spread is itself the finding, which is a good reason to read several accounts rather than one:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Reported speed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dashen Tech&lt;/td&gt;
&lt;td&gt;typically 1 to 3 tokens per second&lt;sup id="fnref5"&gt;5&lt;/sup&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;explainx.ai&lt;/td&gt;
&lt;td&gt;0.5 to 2 tokens per second, against 10 to 20 for a resident-in-memory setup&lt;sup id="fnref6"&gt;6&lt;/sup&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nerd Level Tech&lt;/td&gt;
&lt;td&gt;about 0.7 tokens per second for Llama 2 70B on NVMe with a dedicated GPU, and about 0.07 on an M2 MacBook Pro, roughly 50 tokens in 12 minutes&lt;sup id="fnref7"&gt;7&lt;/sup&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community reports cited by Umesh Malik&lt;/td&gt;
&lt;td&gt;as low as 0.003 tokens per second, at which rate a 108,000-token output would take 416 days&lt;sup id="fnref4"&gt;4&lt;/sup&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Abrarqasim frames the comparison bluntly: a response that a 4-bit quantized 70B under llama.cpp returns in 20 to 90 seconds can take 5 to 20 minutes through AirLLM, putting it somewhere between 50 and 200 times slower than either a paid API or a quantized local model.&lt;sup id="fnref8"&gt;8&lt;/sup&gt; Nerd Level Tech reaches the same conclusion from the other direction, calling it a genuine accessibility achievement but not a replacement for production inference tools like llama.cpp or vLLM.&lt;sup id="fnref7"&gt;7&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Those are the terms the project is offering, and they suit a batch job or an overnight evaluation, where the work can run unattended and the wait costs nothing. They suit anything interactive very poorly.&lt;/p&gt;

&lt;p&gt;One cost that is easy to miss, and that we have not seen the project address: Abrarqasim notes that streaming an entire model off the drive for every token puts serious mileage on consumer SSDs, which are typically rated somewhere between 600 and 1200 terabytes written. Sustained use draws down a measurable share of that budget.&lt;sup id="fnref8"&gt;8&lt;/sup&gt; If you plan to leave a job running for days, that is worth thinking about before you start.&lt;/p&gt;

&lt;p&gt;The project does offer a speed lever: optional block-wise quantization compression, which it reports at up to three times faster inference with what it describes as almost ignorable accuracy loss.&lt;sup id="fnref9"&gt;9&lt;/sup&gt; Note that turning it on means the run is quantized, which trades away the specific thing that makes the unquantized claim interesting. Dashen Tech adds a fair counterpoint here: because the bottleneck is disk throughput rather than compute, only the weights need compressing, which is an easier thing to do without hurting accuracy than quantizing an entire inference path.&lt;sup id="fnref5"&gt;5&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it stands
&lt;/h2&gt;

&lt;p&gt;AirLLM is Apache-2.0 licensed and has been in development since June 2023. At the time of writing it carries about 29,800 stars and 3,100 forks, with commits landing this month.&lt;sup id="fnref10"&gt;10&lt;/sup&gt; It has had its rounds of attention on Hacker News, and enough independent write-ups now exist that a reader can triangulate the claims rather than take the README at its word.&lt;sup id="fnref11"&gt;11&lt;/sup&gt;&lt;sup id="fnref12"&gt;12&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Installation is a pip package, and the entry point is deliberately unremarkable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;airllm&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoModel&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Qwen/Qwen3-32B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same single line reportedly scales up, with the project citing Qwen3-235B at around 3GB and DeepSeek-V3 at 671B in around 12GB.&lt;sup id="fnref1"&gt;1&lt;/sup&gt; Version 3.0, released in June 2026, added FP8 support alongside Qwen3, Llama 3.x and 4, DeepSeek V2 and V3, Phi-4 and Gemma. Earlier releases added macOS support and CPU inference.&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Newer support can carry sharp edges. The Kimi K3 path, for example, requires &lt;code&gt;compressed-tensors&lt;/code&gt; and &lt;code&gt;flash-attn&lt;/code&gt;, a CUDA 12 build of torch because no prebuilt flash-attention wheel exists for CUDA 13 yet, and &lt;code&gt;transformers&lt;/code&gt; 4.56.x because the model's remote code does not load on 5.x.&lt;sup id="fnref2"&gt;2&lt;/sup&gt; That is worth knowing before setting aside an evening for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it is worth a look
&lt;/h2&gt;

&lt;p&gt;The interesting part is not the specific numbers, which will move. It is the reframing.&lt;/p&gt;

&lt;p&gt;Treating VRAM as a hard ceiling makes hardware the thing that decides which models you are allowed to run at all. Treating it as a working buffer makes hardware decide how long you wait. The second framing is the friendlier one for anyone learning, evaluating, or building on a machine they already own, and it is a useful reminder that some constraints are conventions that nobody has yet had a reason to question.&lt;/p&gt;

&lt;h2&gt;
  
  
  We have not run it, and we would like to hear from people who have
&lt;/h2&gt;

&lt;p&gt;To be plain about it: nobody at GBTI Network has used AirLLM. Everything above comes from the project's own documentation and from third-party write-ups, cited as such, and none of the performance figures have been reproduced here. Treat this as a pointer to something worth investigating, not as a review.&lt;/p&gt;

&lt;p&gt;That gap is exactly where the network is useful. If you have run AirLLM, we would like to hear the specifics that documentation never captures: what card and what storage, which model, what token rate you actually saw, whether the compression option was worth enabling, and what broke on the way. A report that it did not work is as useful as one that it did.&lt;/p&gt;

&lt;p&gt;Leave a comment on this article, or bring it to Discord if it turns into a longer conversation. If enough measurements come in, we will write them up as a follow-up and credit the members who supplied them.&lt;/p&gt;

&lt;p&gt;Photographs by Sergei Starostin&lt;sup id="fnref13"&gt;13&lt;/sup&gt; and Andrey Matveev&lt;sup id="fnref14"&gt;14&lt;/sup&gt;, both on Pexels.&lt;/p&gt;

&lt;p&gt;The resource shared in this post is a new article published by GBTI Network member GBTI Network. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow GBTI Network's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/gbtilabs/" rel="noopener noreferrer"&gt;https://gbti.network/members/gbtilabs/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;AirLLM project README, accessed August 7, 2026: &lt;a href="https://github.com/lyogavin/airllm" rel="noopener noreferrer"&gt;lyogavin/airllm&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;AirLLM release notes in the project README (v2.5 prefetching, v2.8.2 macOS, v2.10.1 CPU inference, v3.0 FP8, and the July 2026 Kimi K3 entry), accessed August 7, 2026.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;Starlog, "Running 70B LLMs on a 4GB GPU: How AirLLM Trades Speed for Accessibility," accessed August 7, 2026: &lt;a href="https://starlog.is/articles/llm-engineering/lyogavin-airllm/" rel="noopener noreferrer"&gt;starlog.is&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;Umesh Malik, "Run 70B LLM on 4GB GPU: AirLLM's Real Tradeoff," accessed August 7, 2026. The per-storage-tier floors and the 416-day figure are his: &lt;a href="https://umesh-malik.com/blog/run-70b-llm-on-4gb-gpu-airllm" rel="noopener noreferrer"&gt;umesh-malik.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;Dashen Tech, "The Complete AirLLM Guide: Run 70B LLMs on a 4GB GPU," accessed August 7, 2026: &lt;a href="https://dashen-tech.com/en/dev-tools/airllm-4gb-gpu-70b-llm-guide/" rel="noopener noreferrer"&gt;dashen-tech.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn6"&gt;
&lt;p&gt;explainx.ai, "AirLLM: Run 70B LLM on 4GB GPU, No Quantization," accessed August 7, 2026: &lt;a href="https://explainx.ai/blog/airllm-run-70b-llm-4gb-gpu-inference-2026" rel="noopener noreferrer"&gt;explainx.ai&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn7"&gt;
&lt;p&gt;Nerd Level Tech, "AirLLM Tested: Run a 70B LLM on a 4GB GPU, Does It Work?," accessed August 7, 2026: &lt;a href="https://nerdleveltech.com/airllm-run-70b-llm-single-4gb-gpu" rel="noopener noreferrer"&gt;nerdleveltech.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn8"&gt;
&lt;p&gt;Abrarqasim, "AirLLM Review: The Truth Behind Running 70B LLMs Locally," accessed August 7, 2026. The 50x to 200x comparison and the SSD endurance point are his: &lt;a href="https://abrarqasim.com/blog/airllm-the-hype-vs-the-reality/" rel="noopener noreferrer"&gt;abrarqasim.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn9"&gt;
&lt;p&gt;AirLLM README, "Model Compression - 3x Inference Speed Up," which cites block-wise quantization research at &lt;a href="https://arxiv.org/abs/2212.09720" rel="noopener noreferrer"&gt;arXiv:2212.09720&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn10"&gt;
&lt;p&gt;GitHub repository metadata for lyogavin/airllm, read August 7, 2026: Apache-2.0, created June 12, 2023, most recent push August 6, 2026.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn11"&gt;
&lt;p&gt;Hacker News discussion, "AirLLM 70B inference with single 4GB GPU": &lt;a href="https://news.ycombinator.com/item?id=49154228" rel="noopener noreferrer"&gt;news.ycombinator.com&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn12"&gt;
&lt;p&gt;Bright Coding, "AirLLM: Run 70B Models on 4GB GPUs Without Compromise," February 27, 2026: &lt;a href="https://www.blog.brightcoding.dev/2026/02/27/airllm-run-70b-models-on-4gb-gpus-without-compromise" rel="noopener noreferrer"&gt;blog.brightcoding.dev&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn13"&gt;
&lt;p&gt;Memory modules photograph by Sergei Starostin on Pexels, used under the &lt;a href="https://www.pexels.com/license/" rel="noopener noreferrer"&gt;Pexels License&lt;/a&gt;: &lt;a href="https://www.pexels.com/photo/green-and-black-computer-ram-stick-6636474/" rel="noopener noreferrer"&gt;pexels.com/photo/6636474&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn14"&gt;
&lt;p&gt;Storage media photograph by Andrey Matveev on Pexels, used under the &lt;a href="https://www.pexels.com/license/" rel="noopener noreferrer"&gt;Pexels License&lt;/a&gt;: &lt;a href="https://www.pexels.com/photo/modern-and-vintage-data-storage-solutions-35147150/" rel="noopener noreferrer"&gt;pexels.com/photo/35147150&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>llm</category>
      <category>inference</category>
      <category>opensource</category>
      <category>gpu</category>
    </item>
    <item>
      <title>VSCode Extension: Terminal Session Profiles</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Tue, 04 Aug 2026 02:20:57 +0000</pubDate>
      <link>https://dev.to/gbti-network/vscode-extension-terminal-session-profiles-39k5</link>
      <guid>https://dev.to/gbti-network/vscode-extension-terminal-session-profiles-39k5</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/atwellpub"&gt;@atwellpub&lt;/a&gt;, &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;GBTI Network Member&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/products/terminal-session-profiles/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Over the past two years, the introduction of tools such as Claude Code has made terminal management a much more central part of the day-to-day development workbench. Terminals are no longer temporary scratch space. They often represent distinct, long-running parts of a project, each with its own name, working directory, and purpose.&lt;/p&gt;

&lt;p&gt;Our own terminal configuration commonly includes several named Claude Code sessions, each with its own name inside Claude Code and remote control enabled by default. We also tend to keep one PowerShell terminal open for running Windows commands and one WSL terminal for working directly within Windows Subsystem for Linux. It is therefore not unusual for us to have three to five terminal tabs open within a single project.&lt;/p&gt;

&lt;p&gt;VS Code already supports &lt;a href="https://code.visualstudio.com/docs/terminal/advanced" rel="noopener noreferrer"&gt;persistent terminal sessions&lt;/a&gt;, but its native features are spread across terminal profiles, tasks, settings, and workspace permissions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=GBTI.gbti-terminal-sessions" rel="noopener noreferrer"&gt;Terminal Session Profiles&lt;/a&gt; brings those pieces into one UI and adds reusable workspace or global profiles, ordered startup commands, automatic reprovisioning, and optional Claude session resume commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terminal session profile manager
&lt;/h2&gt;

&lt;p&gt;A profile is a saved terminal setup: which shell to open, where, and what to run once it is ready. Create one from the sidebar's ＋, or right-click any terminal and choose &lt;strong&gt;Save as Instance Profile&lt;/strong&gt; to start from a terminal you already have open.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fru8ox22utmh0apzhe02r.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fru8ox22utmh0apzhe02r.webp" alt="The Session Profiles view, with a profile launching an agent in the terminal column" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Profiles can be created from the Session Profiles sidebar or saved from a terminal that is already open. Once created, each profile remains available within the project and can be launched whenever it is needed.&lt;/p&gt;

&lt;p&gt;A typical project might include separate profiles for several named Claude Code sessions, a development server, a build watcher, a general PowerShell terminal, and a WSL terminal. Instead of manually rebuilding each of these environments, they become reusable parts of the project.&lt;/p&gt;

&lt;p&gt;Each profile includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A profile name&lt;/li&gt;
&lt;li&gt;A shell&lt;/li&gt;
&lt;li&gt;A working directory&lt;/li&gt;
&lt;li&gt;An ordered list of commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu7yzrr7zin05s1j6gdmi.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu7yzrr7zin05s1j6gdmi.webp" alt="The profile editor showing the profile name, shell, working directory, and ordered commands" width="799" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Commands are replayed literally and in the order they are written. Every command except the final one is awaited before the next begins. This allows a profile to prepare an environment before launching a long-running process such as an agent, development server, or file watcher.&lt;/p&gt;

&lt;p&gt;For example, a profile can use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude --resume ClaudeCodeSessionName
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to reopen a particular named Claude Code session.&lt;/p&gt;

&lt;p&gt;This allows each terminal profile to correspond directly with a specific Claude Code session. A project can maintain several independently named agents, each launched in the correct working directory with its intended session restored.&lt;/p&gt;

&lt;p&gt;Commands are not limited to coding agents. A profile can also activate an environment, start a local server, launch a build process, open a project-specific shell, or perform any other command-line preparation the project requires.&lt;/p&gt;

&lt;p&gt;Profiles can optionally be added to the terminal &lt;code&gt;+&lt;/code&gt; dropdown as named terminal profiles. This allows them to remain accessible through VS Code’s familiar terminal controls while still benefiting from the command replay managed by the extension.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restoring profiles after a restart
&lt;/h2&gt;

&lt;p&gt;VS Code includes native terminal persistence, but restoring a terminal tab is not necessarily the same as restoring the terminal session that previously occupied it.&lt;/p&gt;

&lt;p&gt;A restored tab may retain its old name and scrollback while reopening as a new default shell with none of its previous processes running. The tab looks familiar, but the environment it represented is no longer there.&lt;/p&gt;

&lt;p&gt;Terminal Session Profiles handles the other half of that recovery.&lt;/p&gt;

&lt;p&gt;Profiles that were running are remembered per workspace. When the project is opened again, the extension identifies the restored terminal tabs associated with those profiles and relaunches them using the correct shell, working directory, and command sequence.&lt;/p&gt;

&lt;p&gt;Restoration happens automatically by default. It can also be started manually through the &lt;strong&gt;Restore&lt;/strong&gt; control in the status bar.&lt;/p&gt;

&lt;p&gt;Before replacing a restored terminal, the extension compares the process recorded when the profile was launched with the process that returned. If the original process genuinely survived, the terminal is left alone rather than being terminated and recreated.&lt;/p&gt;

&lt;p&gt;The objective is simple: reopening a project should also restore the terminal environment that belongs to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional workspace layout
&lt;/h2&gt;

&lt;p&gt;By default, VS Code places the terminal in a horizontal panel beneath the primary workspace, while the Explorer, editor, and AI chat interface occupy the taller areas above it. This arrangement reflects a workflow in which the terminal is treated as a supporting tool rather than one of the main places where work happens.&lt;/p&gt;

&lt;p&gt;That was no longer true for us. As Claude Code and other terminal-based tools became a larger part of our development process, the terminal became just as central as the editor, and sometimes more important. We wanted the option to bring it into the primary workspace as its own column, alongside the Explorer, editor, and chat interface, rather than leaving it confined to a secondary row at the bottom of the IDE.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3vto43cq87oo6u1ce2ui.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3vto43cq87oo6u1ce2ui.webp" alt="Four columns, one keystroke each: Explorer, editor, terminal, and chat with their status bar controls" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once each of these areas became a meaningful part of the daily workbench, we also needed better ways to control focus and move quickly between them. The layout enhancements provide status-bar controls for showing and hiding the Explorer, editor, terminal, and chat areas, with each workspace remembering its own arrangement.&lt;/p&gt;

&lt;p&gt;The layout controls VS Code’s real interface containers rather than replacing or recreating them. The Explorer remains the standard Explorer. The terminal retains its normal terminal list and controls. Claude Code, Codex, and other chat interfaces continue to operate within their existing panels.&lt;/p&gt;

&lt;p&gt;This is important because the layout enhancement does not attempt to introduce a replacement workspace. It provides faster controls for arranging the tools already present in VS Code.&lt;/p&gt;

&lt;p&gt;One column always remains visible, preventing the workspace from being reduced to an empty window. A &lt;strong&gt;Reset Layout&lt;/strong&gt; command restores the standard arrangement whenever needed.&lt;/p&gt;

&lt;p&gt;We felt these improvements belonged naturally within the same extension because they address the workspace surrounding the terminal sessions it manages. The layout remains entirely optional and can be disabled through the extension settings without affecting session profiles, command replay, or terminal restoration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Independent features
&lt;/h2&gt;

&lt;p&gt;The terminal session profile manager and the column layout are related enhancements, but neither depends on the other.&lt;/p&gt;

&lt;p&gt;Disabling the column layout does not disable profiles. Saved profiles can still be launched, their commands can still be replayed, and active profile sessions can still be restored when a project reopens.&lt;/p&gt;

&lt;p&gt;Layout preferences are also remembered separately for each workspace. A project in which the layout has been disabled will remain that way across restarts, while another workspace can continue using the column arrangement.&lt;/p&gt;

&lt;p&gt;There is deliberately no master switch inside the extension that disables every feature at once. The column controls manage the layout, while the session settings manage profile restoration. The extension itself can still be disabled through VS Code’s Extensions view.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keyboard and workspace controls
&lt;/h2&gt;

&lt;p&gt;The extension includes commands for managing profiles, restoring sessions, navigating the column layout, and resetting the workspace.&lt;/p&gt;

&lt;p&gt;Default shortcuts include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Toggle Explorer&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+Alt+1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toggle editor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+Alt+2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toggle terminal&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+Alt+3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toggle chat&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+Alt+4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open a new terminal in the terminal column&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+Shift+`&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grow the focused column&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+Alt+Right&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shrink the focused column&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+Alt+Left&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Additional commands are available through the Command Palette and status-bar controls for creating profiles, editing profiles, restoring the last session, enabling or disabling the layout, and resetting the workspace arrangement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;Search for &lt;strong&gt;Terminal Session Profiles&lt;/strong&gt; in the VS Code Extensions view.&lt;/p&gt;

&lt;p&gt;You can also install it through Quick Open with &lt;code&gt;Ctrl+P&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ext install GBTI.gbti-terminal-sessions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Terminal Session Profiles is published through the Visual Studio Marketplace as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GBTI.gbti-terminal-sessions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is also available through Open VSX for VSCodium and compatible editors.&lt;/p&gt;

&lt;p&gt;Terminal Session Profiles is free, open source, and licensed under MIT.&lt;/p&gt;

&lt;p&gt;The resource shared in this post is a new product published by GBTI Network member Hudson Atwell. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Hudson Atwell's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;https://gbti.network/members/atwellpub/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>vscode</category>
      <category>terminal</category>
      <category>sessions</category>
      <category>profiles</category>
    </item>
    <item>
      <title>Resolve Open Questions: a /qa Skill for Claude Code</title>
      <dc:creator>GBTI Network</dc:creator>
      <pubDate>Fri, 31 Jul 2026 17:22:00 +0000</pubDate>
      <link>https://dev.to/gbti-network/resolve-open-questions-a-qa-skill-for-claude-code-1jp2</link>
      <guid>https://dev.to/gbti-network/resolve-open-questions-a-qa-skill-for-claude-code-1jp2</guid>
      <description>&lt;p&gt;&lt;strong&gt;By &lt;a class="mentioned-user" href="https://dev.to/atwellpub"&gt;@atwellpub&lt;/a&gt;, &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;GBTI Network Member&lt;/a&gt;.&lt;/strong&gt; Originally published on &lt;a href="https://gbti.network/prompts/qa-skill-for-claude-code-and-codex/" rel="noopener noreferrer"&gt;gbti.network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Claude Code loads any markdown file at &lt;code&gt;.claude/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt; as a reusable slash command (a "skill"). This one gives your agent a &lt;code&gt;/qa&lt;/code&gt; command that stops before it builds, pulls every unresolved decision into a single batch of questions, and refuses to write code until you have answered them.&lt;/p&gt;

&lt;p&gt;It exists because open questions have a habit of surfacing at the wrong end of the work. A sprint finishes, and only then does the agent raise the decisions it should have raised at the start, at exactly the point where acting on them means redoing something.&lt;/p&gt;

&lt;p&gt;The mechanism is plan mode, invoked deliberately. The agent puts ITSELF into a read-only state, does its research there, asks everything it found in one batch, and only then acts. That ordering is the whole feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;.claude/skills/qa/&lt;/code&gt; in your repo, or &lt;code&gt;~/.claude/skills/qa/&lt;/code&gt; to have it in every project.&lt;/li&gt;
&lt;li&gt;Save the file below as &lt;code&gt;SKILL.md&lt;/code&gt; inside it.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;/qa&lt;/code&gt; in Claude Code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nothing to configure. The skill reads your project, not a config file.&lt;/p&gt;

&lt;h2&gt;
  
  
  The skill file
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;qa&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;"&lt;/span&gt;
  &lt;span class="s"&gt;Resolve the open questions before the work proceeds. Invoke for "/qa", "/qa continue", "/qa proceed",&lt;/span&gt;
  &lt;span class="s"&gt;"/qa deep", "/qa &amp;lt;topic&amp;gt;", or when the user asks you to ask your questions first, clarify before&lt;/span&gt;
  &lt;span class="s"&gt;building, or answer the things you just raised. By default it interrogates only YOUR OWN LAST REPLY&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
  &lt;span class="s"&gt;the questions, options and flagged decisions already sitting in it. "/qa deep" runs the full&lt;/span&gt;
  &lt;span class="s"&gt;six-category sweep instead. Every mode enters plan mode; "continue" and "proceed" skip the plan&lt;/span&gt;
  &lt;span class="s"&gt;approval and build straight from the answers.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# /qa: resolve the open questions before building&lt;/span&gt;

The point of this command is to move every decision that is the user's call OUT of your head and
into one batch of questions, answered before any code is written. No silent defaults, no drip of
ad-hoc questions later.

The common case is small and cheap: a reply just ended with open questions in it, and the user wants
those answered properly instead of letting them evaporate. That is the default. The exhaustive sweep
is a separate, deliberate mode, because it costs real tokens and most invocations do not need it.

&lt;span class="gu"&gt;## Read the argument first, it selects the mode&lt;/span&gt;

&lt;span class="sb"&gt;`continue`&lt;/span&gt;, &lt;span class="sb"&gt;`proceed`&lt;/span&gt; and &lt;span class="sb"&gt;`deep`&lt;/span&gt; are reserved words. Anything else is a topic.

| Invocation | Mode |
|---|---|
| &lt;span class="sb"&gt;`/qa`&lt;/span&gt; | &lt;span class="gs"&gt;**Ask and hold, last reply.**&lt;/span&gt; Enter plan mode (&lt;span class="sb"&gt;`EnterPlanMode`&lt;/span&gt;), interrogate your own last reply, ask what it left open, then present a plan for approval (&lt;span class="sb"&gt;`ExitPlanMode`&lt;/span&gt;). Write nothing until approved. |
| &lt;span class="sb"&gt;`/qa continue`&lt;/span&gt; or &lt;span class="sb"&gt;`/qa proceed`&lt;/span&gt; | &lt;span class="gs"&gt;**Ask and go.**&lt;/span&gt; Identical, minus the confirmation before acting: once the answers land you build straight from them, with no plan written for review. |
| &lt;span class="sb"&gt;`/qa deep`&lt;/span&gt; | &lt;span class="gs"&gt;**Full sweep.**&lt;/span&gt; Step 2's six categories instead of the last-reply scope. Use when starting real work, not when closing out a reply. |
| &lt;span class="sb"&gt;`/qa deep continue`&lt;/span&gt; or &lt;span class="sb"&gt;`/qa deep proceed`&lt;/span&gt; | Full sweep, no approval round. Scope and approval are independent. |
| &lt;span class="sb"&gt;`/qa &amp;lt;anything else&amp;gt;`&lt;/span&gt; | &lt;span class="gs"&gt;**Scoped.**&lt;/span&gt; The trailing text names the subject to interrogate. Add &lt;span class="sb"&gt;`continue`&lt;/span&gt; or &lt;span class="sb"&gt;`proceed`&lt;/span&gt; to drop the approval round for it. |

Every mode enters plan mode and holds its read-only discipline until the questions are answered. The
question-asking discipline in step 3 is identical in all of them; only the SCOPE and the approval
round change.

&lt;span class="gu"&gt;## Step 1: verify before you ask&lt;/span&gt;

Never ask what the repository can answer. Check the claims your questions rest on before putting them
to the user, so every question is one that genuinely cannot be resolved without them. A question the
code already answers is noise, and it teaches the user that /qa wastes their time.

In the default mode this is targeted, not a survey: confirm the specific facts behind the items your
last reply raised. A flagged failure may already have its reason recorded somewhere; an offered option
may turn out to be impossible or already done. Verifying first routinely dissolves a question or
changes what it should have been.

&lt;span class="gu"&gt;## Step 2: what to interrogate&lt;/span&gt;

&lt;span class="gs"&gt;**Default: your own last reply.**&lt;/span&gt; Re-read the reply you just gave and pull out everything you left
open: questions you asked, options you offered, decisions you named as the user's, caveats you
attached, and anything you said you COULD do next. That set is the batch. Do not sweep the codebase.

If the last reply left nothing open, say so plainly and stop. Do not go hunting for work to justify
the invocation.

&lt;span class="gs"&gt;**Deep (`/qa deep`): the full sweep.**&lt;/span&gt; Cover all of these, not just the obvious one:
&lt;span class="p"&gt;
1.&lt;/span&gt; &lt;span class="gs"&gt;**The request itself.**&lt;/span&gt; Scope boundaries, what is deliberately excluded, naming, placement.
&lt;span class="p"&gt;2.&lt;/span&gt; &lt;span class="gs"&gt;**The governing doc.**&lt;/span&gt; If the work traces to a planning document (a scope of work, a ticket, a
   spec), its open-questions section is the primary source. Pull those forward verbatim.
&lt;span class="p"&gt;3.&lt;/span&gt; &lt;span class="gs"&gt;**What the audit surfaced.**&lt;/span&gt; Which existing pattern to reuse, where a shared helper lives,
   whether to extend a surface or add one.
&lt;span class="p"&gt;4.&lt;/span&gt; &lt;span class="gs"&gt;**Anything you were about to default silently.**&lt;/span&gt; If you caught yourself picking, it is a
   question. This is the highest-yield category.
&lt;span class="p"&gt;5.&lt;/span&gt; &lt;span class="gs"&gt;**The user's call by nature.**&lt;/span&gt; Product and UX behavior, copy, data-shape changes, anything
   irreversible or outward-facing, and anything that costs money or needs provisioning.
&lt;span class="p"&gt;6.&lt;/span&gt; &lt;span class="gs"&gt;**Conflicts.**&lt;/span&gt; Where the request contradicts an existing convention, the code, or an earlier
   decision, surface the conflict rather than quietly picking a side.

&lt;span class="gu"&gt;## Step 3: how to ask&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**One batch, numbered, in prose.**&lt;/span&gt; Free-form conversational questions, not multiple-choice
  pickers, unless a question is a genuine either/or.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Give each question a recommendation.**&lt;/span&gt; State the option you would take and why, so the user can
  answer "your call" on any of them and you are still unblocked.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Give each question its stakes in one line.**&lt;/span&gt; What changes depending on the answer. A question
  whose answer changes nothing should not be asked.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Order by consequence**&lt;/span&gt;, most structural first.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Say so when there are none.**&lt;/span&gt; If verification resolved everything, report that plainly and state
  the assumptions you are proceeding under. Do not manufacture questions to justify the command.

&lt;span class="gu"&gt;## Step 4: after the answers&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**Do not re-ask.**&lt;/span&gt; Answered means settled; carry it forward without relitigating.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Record the resolutions where they belong.**&lt;/span&gt; If a planning doc raised the question, write the
  answer back into it so it reads as resolved, not still open.
&lt;span class="p"&gt;-&lt;/span&gt; In ask-and-hold mode, present the plan for approval. In continue/proceed mode, leave plan mode as
  soon as the answers land and build, without composing a plan for review. The harness still
  surfaces a single prompt on the way out of plan mode; that is a formality, not a review round, so
  keep what you write there to a line or two.
&lt;span class="p"&gt;-&lt;/span&gt; If something genuinely new surfaces mid-build, finish everything that does not depend on it, then
  raise the one question at the right moment.

&lt;span class="gu"&gt;## Reminders&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Follow the project's own plan-mode and writing conventions throughout.
&lt;span class="p"&gt;-&lt;/span&gt; The command is about decisions, not permission. Do not turn it into a request to confirm work the
  user already asked for.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The modes
&lt;/h2&gt;

&lt;p&gt;The argument controls two independent things: how wide the agent looks, and whether a plan gets approved before it acts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/qa&lt;/code&gt;&lt;/strong&gt; is the default, and it is deliberately narrow: the agent interrogates its own last reply. Whatever it just left open becomes the batch. This is the everyday case, and it costs almost nothing because there is no sweep.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/qa continue&lt;/code&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;code&gt;/qa proceed&lt;/code&gt;&lt;/strong&gt; is the same, minus the approval round. You answer, it builds. Still plan mode, so nothing gets written while the questions are open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/qa deep&lt;/code&gt;&lt;/strong&gt; widens the scope to the full six-category sweep in the skill file: the request, the governing doc, the audit findings, silent defaults, the decisions that are inherently yours, and conflicts with existing conventions. Use it when you are starting real work, not when you are closing out a reply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/qa &amp;lt;anything else&amp;gt;&lt;/code&gt;&lt;/strong&gt; scopes to a subject. &lt;code&gt;"/qa the rate limiter"&lt;/code&gt; asks everything unresolved about the rate limiter specifically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scope and approval compose, so &lt;code&gt;/qa deep continue&lt;/code&gt; runs the wide sweep and then builds from your answers without a plan to approve.&lt;/p&gt;

&lt;p&gt;The narrow default is the important design choice. An exhaustive sweep on every invocation is expensive and mostly wasted, because the usual reason you type &lt;code&gt;/qa&lt;/code&gt; is that the agent just handed you a list of open questions and you want them asked properly rather than left to evaporate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making it yours
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tune the deep sweep.&lt;/strong&gt; Step 2 lists six places to look under &lt;code&gt;/qa deep&lt;/code&gt;. The list is deliberately generic, so add the categories your projects actually produce. A team with a design system adds "which token or component does this reuse". A team with a data model adds "does this change a stored shape, and what happens to existing rows". A regulated project adds an approvals category. The sweep is only as good as its list, and it only runs when you ask for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Point it at your planning docs.&lt;/strong&gt; The highest-yield item in the sweep is a governing document with an open-questions section, since those questions are already written and already yours to answer. If your project keeps scopes of work, tickets or design docs, name that location explicitly in step 2 so the agent reads it every time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decide how hard the hold is.&lt;/strong&gt; As written, bare &lt;code&gt;/qa&lt;/code&gt; will not touch a file until you approve a plan. If that is heavier than you want for routine work, make &lt;code&gt;continue&lt;/code&gt; the implied default in your copy and reserve the plan-approval round for large changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decide what "last reply" means to you.&lt;/strong&gt; The default reads the agent's most recent message and treats everything it left open as the batch. If your sessions tend to sprawl across several exchanges before you reach for &lt;code&gt;/qa&lt;/code&gt;, widen that to the current thread of work, or just type &lt;code&gt;/qa deep&lt;/code&gt; when the narrow read would miss something.&lt;/p&gt;

&lt;p&gt;The resource shared in this post is a new prompt published by GBTI Network member &lt;a href="https://dev.to/realatwellpub"&gt;Hudson Atwell&lt;/a&gt;. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Are you a writer, musician, or product developer? We would love to support your work on the GBTI Network. For more information about how to join our community visit &lt;a href="https://gbti.network" rel="noopener noreferrer"&gt;https://gbti.network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Hudson Atwell's work more closely, consider joining our network and subscribing to them directly: &lt;a href="https://gbti.network/members/atwellpub/" rel="noopener noreferrer"&gt;https://gbti.network/members/atwellpub/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>claudecode</category>
      <category>agentskills</category>
      <category>planning</category>
      <category>workflow</category>
    </item>
  </channel>
</rss>
