open source is social v-it.org
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Improve ATmosphere deck from adversarial review (9 reviewers)

- Fix CTA: npx vit login now shows handle placeholder
- Fix slide 6: identity/social-graph/agent/algorithm claims
corrected for ATProto technical accuracy
- Simplify slide 2 SVG: larger labels, better contrast,
removed invisible fine detail (stale forks, capability dots)
- Boost dim text contrast across deck (#888→#AAA)
- Fix slide 5 bottom text sizes for projector readability
- Trim slide 4 density, add concrete examples, bump bridge
sentence to read as punchline not footnote

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+72 -140
+32 -66
decks/atmosphere-2026/index.html
··· 83 83 <feGaussianBlur stdDeviation="4" result="blur"/> 84 84 <feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge> 85 85 </filter> 86 - <filter id="dotGlow" x="-100%" y="-100%" width="300%" height="300%"> 87 - <feGaussianBlur stdDeviation="2" result="blur"/> 88 - <feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge> 89 - </filter> 90 86 <filter id="pressure" x="-50%" y="-50%" width="200%" height="200%"> 91 87 <feGaussianBlur stdDeviation="8" result="blur"/> 92 88 <feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge> ··· 101 97 102 98 <!-- === LEFT SIDE: TODAY === --> 103 99 104 - <text x="195" y="48" text-anchor="middle" font-size="20" font-weight="600" fill="#6b7280" letter-spacing="0.05em">today</text> 100 + <text x="195" y="48" text-anchor="middle" font-size="22" font-weight="600" fill="#9ca3af" letter-spacing="0.05em">today</text> 105 101 106 102 <!-- pressure halo --> 107 103 <circle cx="195" cy="122" r="40" fill="none" stroke="#374151" stroke-width="1" opacity="0.2" filter="url(#pressure)"/> 108 104 109 105 <!-- upstream node --> 110 106 <circle cx="195" cy="122" r="28" fill="#1a1d2a" stroke="#6b7280" stroke-width="3"/> 111 - <text x="195" y="118" text-anchor="middle" font-size="11" font-weight="700" fill="#9ca3af" letter-spacing="0.04em">upstream</text> 112 - <text x="195" y="131" text-anchor="middle" font-size="9" fill="#4b5563">maintainer</text> 107 + <text x="195" y="117" text-anchor="middle" font-size="14" font-weight="700" fill="#9ca3af" letter-spacing="0.04em">upstream</text> 108 + <text x="195" y="132" text-anchor="middle" font-size="11" fill="#9ca3af">maintainer</text> 113 109 114 110 <!-- wait badge --> 115 - <g transform="translate(228, 97)"> 116 - <rect x="0" y="0" width="34" height="17" rx="3" fill="#1a1d2a" stroke="#374151" stroke-width="0.8"/> 117 - <text x="17" y="12" text-anchor="middle" font-size="9" fill="#4b5563" font-style="italic">wait</text> 111 + <g transform="translate(226, 95)"> 112 + <rect x="0" y="0" width="38" height="20" rx="3" fill="#1a1d2a" stroke="#374151" stroke-width="0.8"/> 113 + <text x="19" y="14" text-anchor="middle" font-size="11" fill="#9ca3af" font-style="italic">wait</text> 118 114 </g> 119 115 120 116 <!-- lines from forks to upstream --> ··· 141 137 142 138 <!-- fork nodes --> 143 139 <g> 144 - <circle cx="85" cy="208" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 145 - <text x="85" y="212" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 146 - <circle cx="110" cy="263" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 147 - <text x="110" y="267" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 148 - <circle cx="155" cy="298" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 149 - <text x="155" y="302" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 150 - <circle cx="195" cy="313" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 151 - <text x="195" y="317" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 152 - <circle cx="235" cy="298" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 153 - <text x="235" y="302" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 154 - <circle cx="280" cy="263" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 155 - <text x="280" y="267" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 156 - <circle cx="305" cy="208" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 157 - <text x="305" y="212" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 158 - </g> 159 - 160 - <!-- stale/abandoned forks --> 161 - <g opacity="0.4"> 162 - <line x1="55" y1="168" x2="172" y2="134" stroke="#252836" stroke-width="0.7" stroke-dasharray="3,4"/> 163 - <circle cx="47" cy="170" r="7" fill="none" stroke="#252836" stroke-width="1" stroke-dasharray="3,3"/> 164 - <line x1="340" y1="173" x2="218" y2="134" stroke="#252836" stroke-width="0.7" stroke-dasharray="3,4"/> 165 - <circle cx="348" cy="175" r="7" fill="none" stroke="#252836" stroke-width="1" stroke-dasharray="3,3"/> 166 - <line x1="280" y1="340" x2="201" y2="150" stroke="#252836" stroke-width="0.7" stroke-dasharray="3,4"/> 167 - <circle cx="285" cy="345" r="7" fill="none" stroke="#252836" stroke-width="1" stroke-dasharray="3,3"/> 140 + <circle cx="85" cy="208" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 141 + <text x="85" y="213" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 142 + <circle cx="110" cy="263" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 143 + <text x="110" y="268" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 144 + <circle cx="155" cy="298" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 145 + <text x="155" y="303" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 146 + <circle cx="195" cy="313" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 147 + <text x="195" y="318" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 148 + <circle cx="235" cy="298" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 149 + <text x="235" y="303" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 150 + <circle cx="280" cy="263" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 151 + <text x="280" y="268" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 152 + <circle cx="305" cy="208" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 153 + <text x="305" y="213" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 168 154 </g> 169 155 170 156 <!-- left labels --> 171 - <text x="125" y="168" text-anchor="middle" font-size="10" fill="#4b5563" font-style="italic">PR</text> 172 - <text x="268" y="168" text-anchor="middle" font-size="10" fill="#4b5563" font-style="italic">PR</text> 173 - <text x="215" y="232" text-anchor="middle" font-size="10" fill="#4b5563" font-style="italic">issue</text> 174 - <text x="90" y="240" text-anchor="middle" font-size="10" fill="#4b5563" font-style="italic">PR</text> 157 + <text x="125" y="168" text-anchor="middle" font-size="12" fill="#9ca3af" font-style="italic">PR</text> 158 + <text x="268" y="168" text-anchor="middle" font-size="12" fill="#9ca3af" font-style="italic">PR</text> 159 + <text x="215" y="232" text-anchor="middle" font-size="12" fill="#9ca3af" font-style="italic">issue</text> 160 + <text x="90" y="240" text-anchor="middle" font-size="12" fill="#9ca3af" font-style="italic">PR</text> 175 161 176 162 <!-- left caption --> 177 - <text x="195" y="392" text-anchor="middle" font-size="13" fill="#4b5563">fork · PR · wait · merge · repeat</text> 163 + <text x="195" y="392" text-anchor="middle" font-size="15" fill="#9ca3af">fork · PR · wait · merge · repeat</text> 178 164 179 165 <!-- === EVOLUTION ARROW === --> 180 166 181 167 <g transform="translate(400, 220)"> 182 168 <circle r="16" fill="#141722" stroke="#252836" stroke-width="1"/> 183 - <path d="M-5.5 0 L4.5 0 M1.5 -3.5 L5.5 0 L1.5 3.5" stroke="#4b5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/> 169 + <path d="M-5.5 0 L4.5 0 M1.5 -3.5 L5.5 0 L1.5 3.5" stroke="#9ca3af" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/> 184 170 </g> 185 171 186 172 <!-- === RIGHT SIDE: WITH VIT === --> 187 173 188 - <text x="600" y="48" text-anchor="middle" font-size="20" font-weight="600" fill="#059669" letter-spacing="0.05em">with vit</text> 174 + <text x="600" y="48" text-anchor="middle" font-size="22" font-weight="600" fill="#06D6A0" letter-spacing="0.05em">with vit</text> 189 175 190 176 <!-- mesh connections --> 191 177 <g stroke="#06D6A0" stroke-width="0.8" opacity="0.25"> ··· 214 200 <line x1="740" y1="260" x2="620" y2="315"/> 215 201 </g> 216 202 217 - <!-- capability dots --> 218 - <g> 219 - <circle cx="558" cy="109" r="2.5" fill="#06D6A0" opacity="0.8" filter="url(#dotGlow)"/> 220 - <circle cx="668" cy="110" r="2" fill="#34D399" opacity="0.7" filter="url(#dotGlow)"/> 221 - <circle cx="488" cy="162" r="2.5" fill="#06D6A0" opacity="0.7" filter="url(#dotGlow)"/> 222 - <circle cx="545" cy="155" r="2" fill="#34D399" opacity="0.75" filter="url(#dotGlow)"/> 223 - <circle cx="648" cy="148" r="2.5" fill="#06D6A0" opacity="0.65" filter="url(#dotGlow)"/> 224 - <circle cx="700" cy="162" r="2" fill="#34D399" opacity="0.7" filter="url(#dotGlow)"/> 225 - <circle cx="525" cy="205" r="2.5" fill="#06D6A0" opacity="0.75" filter="url(#dotGlow)"/> 226 - <circle cx="632" cy="197" r="2" fill="#34D399" opacity="0.8" filter="url(#dotGlow)"/> 227 - <circle cx="718" cy="228" r="2.5" fill="#06D6A0" opacity="0.7" filter="url(#dotGlow)"/> 228 - <circle cx="485" cy="258" r="2" fill="#34D399" opacity="0.65" filter="url(#dotGlow)"/> 229 - <circle cx="543" cy="252" r="2.5" fill="#06D6A0" opacity="0.75" filter="url(#dotGlow)"/> 230 - <circle cx="655" cy="258" r="2" fill="#34D399" opacity="0.7" filter="url(#dotGlow)"/> 231 - <circle cx="728" cy="280" r="2.5" fill="#06D6A0" opacity="0.8" filter="url(#dotGlow)"/> 232 - <circle cx="560" cy="310" r="2" fill="#34D399" opacity="0.7" filter="url(#dotGlow)"/> 233 - <circle cx="670" cy="307" r="2.5" fill="#06D6A0" opacity="0.75" filter="url(#dotGlow)"/> 234 - <circle cx="600" cy="148" r="2" fill="#06D6A0" opacity="0.5" filter="url(#dotGlow)"/> 235 - </g> 236 - 237 203 <!-- mesh nodes --> 238 204 <g> 239 205 <circle cx="505" cy="120" r="13" fill="#0a2a1f" stroke="#06D6A0" stroke-width="1.5" filter="url(#glow)"/> ··· 263 229 </g> 264 230 265 231 <!-- right caption --> 266 - <text x="600" y="392" text-anchor="middle" font-size="13" fill="#059669">capabilities flow · every repo lives · no upstream</text> 232 + <text x="600" y="392" text-anchor="middle" font-size="15" fill="#06D6A0">capabilities flow · every repo lives · no upstream</text> 267 233 268 234 <!-- vit mark --> 269 235 <g transform="translate(758, 406) scale(0.65)" opacity="0.35"> ··· 317 283 <div style="text-align:left; max-width:420px;"> 318 284 <p class="green" style="font-size:52px; margin:0 0 16px 0; font-weight:600;">skills</p> 319 285 <p style="font-size:34px; margin:0 0 16px 0; line-height:1.3;">reusable agent abilities</p> 320 - <p class="dim" style="font-size:28px; margin:0 0 8px 0;">the npm for agent skills</p> 321 - <p class="dim" style="font-size:28px; margin:0;">publish once, any agent can learn it</p> 286 + <p class="dim" style="font-size:28px; margin:0 0 8px 0;">publish once, any agent can learn it</p> 287 + <p class="dim" style="font-size:24px; margin:0; font-style:italic;">"how to write atproto records"</p> 322 288 </div> 323 289 <div style="width:2px; height:240px; background:var(--text-dim); opacity:0.2; margin-top:12px;"></div> 324 290 <div style="text-align:left; max-width:420px;"> 325 291 <p style="font-size:52px; margin:0 0 16px 0; font-weight:600;">capabilities</p> 326 292 <p style="font-size:34px; margin:0 0 16px 0; line-height:1.3;">structured change instructions</p> 327 293 <p class="dim" style="font-size:28px; margin:0 0 8px 0;">code improvements that flow socially</p> 328 - <p class="dim" style="font-size:28px; margin:0;">adapt, not fork</p> 294 + <p class="dim" style="font-size:24px; margin:0; font-style:italic;">"upgrade your auth to oauth 2.1"</p> 329 295 </div> 330 296 </div> 331 - <p class="green" style="font-size:30px; margin:64px auto 0; max-width:80%; font-weight:500; line-height:1.4;"> 297 + <p class="green" style="font-size:36px; margin:80px auto 0; max-width:80%; font-weight:500; line-height:1.4;"> 332 298 capabilities change codebases. skills teach agents.<br>both flow through the same trust network. 333 299 </p> 334 300 <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="brand-mark" width="40">
+40 -74
docs/decks/atmosphere-2026/index.html
··· 12 12 --green-light: #34D399; 13 13 --green-deep: #059669; 14 14 --text: #F0F0F0; 15 - --text-dim: #888888; 15 + --text-dim: #AAAAAA; 16 16 --text-subtle: #6b7280; 17 17 } 18 18 ··· 83 83 <feGaussianBlur stdDeviation="4" result="blur"/> 84 84 <feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge> 85 85 </filter> 86 - <filter id="dotGlow" x="-100%" y="-100%" width="300%" height="300%"> 87 - <feGaussianBlur stdDeviation="2" result="blur"/> 88 - <feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge> 89 - </filter> 90 86 <filter id="pressure" x="-50%" y="-50%" width="200%" height="200%"> 91 87 <feGaussianBlur stdDeviation="8" result="blur"/> 92 88 <feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge> ··· 101 97 102 98 <!-- === LEFT SIDE: TODAY === --> 103 99 104 - <text x="195" y="48" text-anchor="middle" font-size="20" font-weight="600" fill="#6b7280" letter-spacing="0.05em">today</text> 100 + <text x="195" y="48" text-anchor="middle" font-size="22" font-weight="600" fill="#9ca3af" letter-spacing="0.05em">today</text> 105 101 106 102 <!-- pressure halo --> 107 103 <circle cx="195" cy="122" r="40" fill="none" stroke="#374151" stroke-width="1" opacity="0.2" filter="url(#pressure)"/> 108 104 109 105 <!-- upstream node --> 110 106 <circle cx="195" cy="122" r="28" fill="#1a1d2a" stroke="#6b7280" stroke-width="3"/> 111 - <text x="195" y="118" text-anchor="middle" font-size="11" font-weight="700" fill="#9ca3af" letter-spacing="0.04em">upstream</text> 112 - <text x="195" y="131" text-anchor="middle" font-size="9" fill="#4b5563">maintainer</text> 107 + <text x="195" y="117" text-anchor="middle" font-size="14" font-weight="700" fill="#9ca3af" letter-spacing="0.04em">upstream</text> 108 + <text x="195" y="132" text-anchor="middle" font-size="11" fill="#9ca3af">maintainer</text> 113 109 114 110 <!-- wait badge --> 115 - <g transform="translate(228, 97)"> 116 - <rect x="0" y="0" width="34" height="17" rx="3" fill="#1a1d2a" stroke="#374151" stroke-width="0.8"/> 117 - <text x="17" y="12" text-anchor="middle" font-size="9" fill="#4b5563" font-style="italic">wait</text> 111 + <g transform="translate(226, 95)"> 112 + <rect x="0" y="0" width="38" height="20" rx="3" fill="#1a1d2a" stroke="#374151" stroke-width="0.8"/> 113 + <text x="19" y="14" text-anchor="middle" font-size="11" fill="#9ca3af" font-style="italic">wait</text> 118 114 </g> 119 115 120 116 <!-- lines from forks to upstream --> ··· 141 137 142 138 <!-- fork nodes --> 143 139 <g> 144 - <circle cx="85" cy="208" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 145 - <text x="85" y="212" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 146 - <circle cx="110" cy="263" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 147 - <text x="110" y="267" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 148 - <circle cx="155" cy="298" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 149 - <text x="155" y="302" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 150 - <circle cx="195" cy="313" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 151 - <text x="195" y="317" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 152 - <circle cx="235" cy="298" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 153 - <text x="235" y="302" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 154 - <circle cx="280" cy="263" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 155 - <text x="280" y="267" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 156 - <circle cx="305" cy="208" r="12" fill="#1a1d2a" stroke="#4b5563" stroke-width="1.3"/> 157 - <text x="305" y="212" text-anchor="middle" font-size="9" fill="#6b7280">fork</text> 158 - </g> 159 - 160 - <!-- stale/abandoned forks --> 161 - <g opacity="0.4"> 162 - <line x1="55" y1="168" x2="172" y2="134" stroke="#252836" stroke-width="0.7" stroke-dasharray="3,4"/> 163 - <circle cx="47" cy="170" r="7" fill="none" stroke="#252836" stroke-width="1" stroke-dasharray="3,3"/> 164 - <line x1="340" y1="173" x2="218" y2="134" stroke="#252836" stroke-width="0.7" stroke-dasharray="3,4"/> 165 - <circle cx="348" cy="175" r="7" fill="none" stroke="#252836" stroke-width="1" stroke-dasharray="3,3"/> 166 - <line x1="280" y1="340" x2="201" y2="150" stroke="#252836" stroke-width="0.7" stroke-dasharray="3,4"/> 167 - <circle cx="285" cy="345" r="7" fill="none" stroke="#252836" stroke-width="1" stroke-dasharray="3,3"/> 140 + <circle cx="85" cy="208" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 141 + <text x="85" y="213" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 142 + <circle cx="110" cy="263" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 143 + <text x="110" y="268" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 144 + <circle cx="155" cy="298" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 145 + <text x="155" y="303" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 146 + <circle cx="195" cy="313" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 147 + <text x="195" y="318" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 148 + <circle cx="235" cy="298" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 149 + <text x="235" y="303" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 150 + <circle cx="280" cy="263" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 151 + <text x="280" y="268" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 152 + <circle cx="305" cy="208" r="14" fill="#1a1d2a" stroke="#6b7280" stroke-width="1.3"/> 153 + <text x="305" y="213" text-anchor="middle" font-size="12" fill="#9ca3af">fork</text> 168 154 </g> 169 155 170 156 <!-- left labels --> 171 - <text x="125" y="168" text-anchor="middle" font-size="10" fill="#4b5563" font-style="italic">PR</text> 172 - <text x="268" y="168" text-anchor="middle" font-size="10" fill="#4b5563" font-style="italic">PR</text> 173 - <text x="215" y="232" text-anchor="middle" font-size="10" fill="#4b5563" font-style="italic">issue</text> 174 - <text x="90" y="240" text-anchor="middle" font-size="10" fill="#4b5563" font-style="italic">PR</text> 157 + <text x="125" y="168" text-anchor="middle" font-size="12" fill="#9ca3af" font-style="italic">PR</text> 158 + <text x="268" y="168" text-anchor="middle" font-size="12" fill="#9ca3af" font-style="italic">PR</text> 159 + <text x="215" y="232" text-anchor="middle" font-size="12" fill="#9ca3af" font-style="italic">issue</text> 160 + <text x="90" y="240" text-anchor="middle" font-size="12" fill="#9ca3af" font-style="italic">PR</text> 175 161 176 162 <!-- left caption --> 177 - <text x="195" y="392" text-anchor="middle" font-size="13" fill="#4b5563">fork · PR · wait · merge · repeat</text> 163 + <text x="195" y="392" text-anchor="middle" font-size="15" fill="#9ca3af">fork · PR · wait · merge · repeat</text> 178 164 179 165 <!-- === EVOLUTION ARROW === --> 180 166 181 167 <g transform="translate(400, 220)"> 182 168 <circle r="16" fill="#141722" stroke="#252836" stroke-width="1"/> 183 - <path d="M-5.5 0 L4.5 0 M1.5 -3.5 L5.5 0 L1.5 3.5" stroke="#4b5563" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/> 169 + <path d="M-5.5 0 L4.5 0 M1.5 -3.5 L5.5 0 L1.5 3.5" stroke="#9ca3af" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/> 184 170 </g> 185 171 186 172 <!-- === RIGHT SIDE: WITH VIT === --> 187 173 188 - <text x="600" y="48" text-anchor="middle" font-size="20" font-weight="600" fill="#059669" letter-spacing="0.05em">with vit</text> 174 + <text x="600" y="48" text-anchor="middle" font-size="22" font-weight="600" fill="#06D6A0" letter-spacing="0.05em">with vit</text> 189 175 190 176 <!-- mesh connections --> 191 177 <g stroke="#06D6A0" stroke-width="0.8" opacity="0.25"> ··· 214 200 <line x1="740" y1="260" x2="620" y2="315"/> 215 201 </g> 216 202 217 - <!-- capability dots --> 218 - <g> 219 - <circle cx="558" cy="109" r="2.5" fill="#06D6A0" opacity="0.8" filter="url(#dotGlow)"/> 220 - <circle cx="668" cy="110" r="2" fill="#34D399" opacity="0.7" filter="url(#dotGlow)"/> 221 - <circle cx="488" cy="162" r="2.5" fill="#06D6A0" opacity="0.7" filter="url(#dotGlow)"/> 222 - <circle cx="545" cy="155" r="2" fill="#34D399" opacity="0.75" filter="url(#dotGlow)"/> 223 - <circle cx="648" cy="148" r="2.5" fill="#06D6A0" opacity="0.65" filter="url(#dotGlow)"/> 224 - <circle cx="700" cy="162" r="2" fill="#34D399" opacity="0.7" filter="url(#dotGlow)"/> 225 - <circle cx="525" cy="205" r="2.5" fill="#06D6A0" opacity="0.75" filter="url(#dotGlow)"/> 226 - <circle cx="632" cy="197" r="2" fill="#34D399" opacity="0.8" filter="url(#dotGlow)"/> 227 - <circle cx="718" cy="228" r="2.5" fill="#06D6A0" opacity="0.7" filter="url(#dotGlow)"/> 228 - <circle cx="485" cy="258" r="2" fill="#34D399" opacity="0.65" filter="url(#dotGlow)"/> 229 - <circle cx="543" cy="252" r="2.5" fill="#06D6A0" opacity="0.75" filter="url(#dotGlow)"/> 230 - <circle cx="655" cy="258" r="2" fill="#34D399" opacity="0.7" filter="url(#dotGlow)"/> 231 - <circle cx="728" cy="280" r="2.5" fill="#06D6A0" opacity="0.8" filter="url(#dotGlow)"/> 232 - <circle cx="560" cy="310" r="2" fill="#34D399" opacity="0.7" filter="url(#dotGlow)"/> 233 - <circle cx="670" cy="307" r="2.5" fill="#06D6A0" opacity="0.75" filter="url(#dotGlow)"/> 234 - <circle cx="600" cy="148" r="2" fill="#06D6A0" opacity="0.5" filter="url(#dotGlow)"/> 235 - </g> 236 - 237 203 <!-- mesh nodes --> 238 204 <g> 239 205 <circle cx="505" cy="120" r="13" fill="#0a2a1f" stroke="#06D6A0" stroke-width="1.5" filter="url(#glow)"/> ··· 263 229 </g> 264 230 265 231 <!-- right caption --> 266 - <text x="600" y="392" text-anchor="middle" font-size="13" fill="#059669">capabilities flow · every repo lives · no upstream</text> 232 + <text x="600" y="392" text-anchor="middle" font-size="15" fill="#06D6A0">capabilities flow · every repo lives · no upstream</text> 267 233 268 234 <!-- vit mark --> 269 235 <g transform="translate(758, 406) scale(0.65)" opacity="0.35"> ··· 317 283 <div style="text-align:left; max-width:420px;"> 318 284 <p class="green" style="font-size:52px; margin:0 0 16px 0; font-weight:600;">skills</p> 319 285 <p style="font-size:34px; margin:0 0 16px 0; line-height:1.3;">reusable agent abilities</p> 320 - <p class="dim" style="font-size:28px; margin:0 0 8px 0;">the npm for agent skills</p> 321 - <p class="dim" style="font-size:28px; margin:0;">publish once, any agent can learn it</p> 286 + <p class="dim" style="font-size:28px; margin:0 0 8px 0;">publish once, any agent can learn it</p> 287 + <p class="dim" style="font-size:24px; margin:0; font-style:italic;">"how to write atproto records"</p> 322 288 </div> 323 289 <div style="width:2px; height:240px; background:var(--text-dim); opacity:0.2; margin-top:12px;"></div> 324 290 <div style="text-align:left; max-width:420px;"> 325 291 <p style="font-size:52px; margin:0 0 16px 0; font-weight:600;">capabilities</p> 326 292 <p style="font-size:34px; margin:0 0 16px 0; line-height:1.3;">structured change instructions</p> 327 293 <p class="dim" style="font-size:28px; margin:0 0 8px 0;">code improvements that flow socially</p> 328 - <p class="dim" style="font-size:28px; margin:0;">adapt, not fork</p> 294 + <p class="dim" style="font-size:24px; margin:0; font-style:italic;">"upgrade your auth to oauth 2.1"</p> 329 295 </div> 330 296 </div> 331 - <p class="green" style="font-size:30px; margin:64px auto 0; max-width:80%; font-weight:500; line-height:1.4;"> 297 + <p class="green" style="font-size:36px; margin:80px auto 0; max-width:80%; font-weight:500; line-height:1.4;"> 332 298 capabilities change codebases. skills teach agents.<br>both flow through the same trust network. 333 299 </p> 334 300 <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="brand-mark" width="40"> ··· 361 327 </div> 362 328 </div> 363 329 </div> 364 - <p class="dim" style="font-size:26px; margin:0 0 12px 0;">trust decisions stay with humans. discovery and execution flow through agents.</p> 365 - <p class="dim" style="font-size:22px; margin:0;">Claude Code · Codex CLI · Gemini CLI</p> 330 + <p class="dim" style="font-size:30px; margin:0 0 12px 0;">trust decisions stay with humans. discovery and execution flow through agents.</p> 331 + <p class="dim" style="font-size:28px; margin:0;">Claude Code · Codex CLI · Gemini CLI</p> 366 332 <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="brand-mark" width="40"> 367 333 <circle cx="16" cy="5.5" r="3" fill="#06D6A0"/> 368 334 <path d="M5.5 10 L16 26 L26.5 10" stroke="#06D6A0" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/> ··· 373 339 <section> 374 340 <p class="green" style="font-size:58px; margin:0 0 64px 0; font-weight:600;">built on our protocol.</p> 375 341 <div style="text-align:left; max-width:72%; margin:0 auto; line-height:2.2;"> 376 - <p style="font-size:40px; margin:0;">your identity is your handle.</p> 377 - <p style="font-size:40px; margin:0;">your social graph is your trust network.</p> 378 - <p style="font-size:40px; margin:0;">agents become social curators.</p> 379 - <p style="font-size:40px; margin:0;">no lock-in. no algorithm. portable.</p> 342 + <p style="font-size:40px; margin:0;">your identity travels with you.</p> 343 + <p style="font-size:40px; margin:0;">you build a trust graph for code.</p> 344 + <p style="font-size:40px; margin:0;">your agent works the network on your behalf.</p> 345 + <p style="font-size:40px; margin:0;">no lock-in. you choose your feed. portable.</p> 380 346 </div> 381 347 <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="brand-mark" width="40"> 382 348 <circle cx="16" cy="5.5" r="3" fill="#06D6A0"/> ··· 392 358 </svg> 393 359 <div class="mono" style="display:flex; flex-direction:column; align-items:center; gap:12px; margin-bottom:40px;"> 394 360 <span class="green" style="font-size:42px;">npx vit setup</span> 395 - <span class="green" style="font-size:42px;">npx vit login</span> 361 + <span class="green" style="font-size:42px;">npx vit login you.bsky.social</span> 396 362 </div> 397 363 <p style="font-size:42px; margin:0 0 20px 0;">open source is social.</p> 398 364 <p class="dim" style="font-size:28px; margin:0;">v-it.org · explore.v-it.org · MIT license</p>