<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jessica Temporal</title>
    <description>The latest articles on Forem by Jessica Temporal (@jesstemporal).</description>
    <link>https://forem.com/jesstemporal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F238241%2F7884951e-419b-4513-ab5e-549a0c159522.png</url>
      <title>Forem: Jessica Temporal</title>
      <link>https://forem.com/jesstemporal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jesstemporal"/>
    <language>en</language>
    <item>
      <title>How to Use Auth0 Agent Skills in Claude Code &amp; AI Coding Assistants</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Mon, 06 Apr 2026 18:27:59 +0000</pubDate>
      <link>https://forem.com/auth0/how-to-use-auth0-agent-skills-in-claude-code-ai-coding-assistants-56e5</link>
      <guid>https://forem.com/auth0/how-to-use-auth0-agent-skills-in-claude-code-ai-coding-assistants-56e5</guid>
      <description>&lt;p&gt;Tired of your AI coding assistant hallucinating APIs or writing insecure auth patterns? In this video, I'll show you how to use Auth0 Agent Skills to teach your AI assistant (like Claude Code or GitHub Copilot) how to implement Auth0 correctly. Say goodbye to XSS vulnerabilities and manual JWT decoding—ship production-ready, secure authentication from the start.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You'll Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why standard AI coding assistants struggle with secure authentication.&lt;/li&gt;
&lt;li&gt;How to install Auth0 Agent Skills via NPX or Claude Code plugins.&lt;/li&gt;
&lt;li&gt;The difference between Core Skills and SDK Skills (React, Next.js, etc.).&lt;/li&gt;
&lt;li&gt;A side-by-side comparison of "hallucinated" code vs. secure Auth0 patterns.&lt;/li&gt;
&lt;li&gt;How to implement production-ready auth in Next.js using Agent Skills.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;📝 &lt;a href="https://auth0.com/blog/auth0-agent-skills-ai-coding-assistants/" rel="noopener noreferrer"&gt;Read the full blog post&lt;/a&gt;&lt;br&gt;
🛠️ &lt;a href="https://auth0.com/docs/quickstart/agent-skills" rel="noopener noreferrer"&gt;Auth0 Documentation&lt;/a&gt;&lt;br&gt;
💻 &lt;a href="https://github.com/auth0/agent-skills" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Auth0 MCP Server Extension for Gemini CLI</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Fri, 27 Mar 2026 11:00:00 +0000</pubDate>
      <link>https://forem.com/auth0/auth0-mcp-server-extension-for-gemini-cli-405m</link>
      <guid>https://forem.com/auth0/auth0-mcp-server-extension-for-gemini-cli-405m</guid>
      <description>&lt;p&gt;The Auth0 MCP Server is now listed on the official Gemini CLI extensions page. This means the Auth0 MCP Server is now directly installable through Gemini CLI with one command, allowing you to authenticate to Auth0 directly from your Gemini CLI session and load tenant information automatically.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/iiSuv8BnPC0"&gt;
  &lt;/iframe&gt;
 &lt;/p&gt;
&lt;h2&gt;
  
  
  What the Auth0 MCP Server Extension Provides
&lt;/h2&gt;

&lt;p&gt;The extension packages the Auth0 MCP Server for Gemini CLI and adds three integration layers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discoverability&lt;/strong&gt;: Listed on &lt;a href="https://geminicli.com/extensions" rel="noopener noreferrer"&gt;geminicli.com/extensions&lt;/a&gt;, searchable by name, installable without manual configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication Commands&lt;/strong&gt;: Built-in slash commands for Auth0 tenant management:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/auth0:init&lt;/code&gt; - Device authorization flow with tenant selection&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/auth0:logout&lt;/code&gt; - Session termination&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/auth0:session&lt;/code&gt; - Current authentication status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Context Injection&lt;/strong&gt;: After authentication, Gemini gains your tenant information so the AI can query applications, APIs, connections, actions, and logs without requiring manual tenant specification in every prompt.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installation and Setup
&lt;/h2&gt;

&lt;p&gt;Install the extension:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gemini extensions &lt;span class="nb"&gt;install &lt;/span&gt;https://github.com/auth0/auth0-mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the command successfully finishes you should see a message stating &lt;code&gt;Extension “Auth0” installed successfully&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzi13ha0j201bszply11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzi13ha0j201bszply11.png" alt="Terminal showing the installation of the Auth0 MCP server as a Gemini CLI extension"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Initialize the Auth0 MCP Server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/auth0:init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to allow the command to run when prompted. The server will run automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr7q3o4dmnm02utqeu4ji.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr7q3o4dmnm02utqeu4ji.png" alt="Gemini CLI terminal showing /auth0:init command with permission prompt to allow command execution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll authenticate via &lt;a href="https://auth0.com/docs/get-started/authentication-and-authorization-flow/device-authorization-flow" rel="noopener noreferrer"&gt;device code flow&lt;/a&gt; to select your tenant:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnik2h6j061y0y9brksu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnik2h6j061y0y9brksu.png" alt="Auth0 device authorization screen displaying device code and instructions to complete authentication"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And confirm the permissions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0wx8dzfzrmbnntzeaj7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0wx8dzfzrmbnntzeaj7b.png" alt="Auth0 authorization screen showing requested permissions for Auth0 MCP Server extension"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once authenticated, you should see a message within Gemini saying the Auth0 MCP Server is configured and to restart Gemini CLI to see the changes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10jdvkxmdmkufvebcm26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10jdvkxmdmkufvebcm26.png" alt="Gemini CLI terminal displaying successful Auth0 MCP Server initialization with tenant connection confirmed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Refresh the MCP server list with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/mcp refresh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gemini now has Auth0 context. Ask: "show me my applications" and the AI will receive the structured information about your applications, which Gemini CLI will display as a structured tool call result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwrab4gmufeqlx8rtwf8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwrab4gmufeqlx8rtwf8m.png" alt="Gemini CLI tool call output showing structured JSON data of Auth0 applications from the MCP server"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And since Gemini now understands your tenant structure, existing configurations, and naming conventions, it can also show you the same information in a more readable format:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n6pl8wgu6ipiazokouq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n6pl8wgu6ipiazokouq.png" alt="Gemini CLI displaying formatted, human-readable list of Auth0 applications with names, types, and client IDs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Before this extension, using the Auth0 MCP Server with Gemini CLI required manual server configuration, environment variable setup, and custom initialization scripts. The extension collapses that into a single install command and three slash commands.&lt;/p&gt;

&lt;p&gt;More importantly: context persistence. Once authenticated, every Gemini session knows your Auth0 environment. You're not re-explaining your tenant structure or copy-pasting app IDs. The AI assistant operates with the same tenant awareness you have.&lt;/p&gt;

&lt;p&gt;This is the same Auth0 MCP Server that powers VS Code integrations, now packaged for Gemini CLI's extension model. Same capabilities, different CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;The Auth0 MCP Server supports tenant management, application configuration, API setup, and log analysis. For implementation details and the full MCP Server feature set, &lt;a href="https://github.com/auth0/auth0-mcp-server?tab=readme-ov-file#%EF%B8%8F-supported-tools" rel="noopener noreferrer"&gt;see the list on GitHub here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The extension is available now at &lt;a href="https://geminicli.com/extensions" rel="noopener noreferrer"&gt;geminicli.com/extensions&lt;/a&gt;. Install, authenticate, and start managing Auth0 tenants through natural language.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>tutorial</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Demystifying OAuth Security: State vs. Nonce vs. PKCE</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Fri, 13 Mar 2026 16:17:44 +0000</pubDate>
      <link>https://forem.com/auth0/demystifying-oauth-security-state-vs-nonce-vs-pkce-2eo2</link>
      <guid>https://forem.com/auth0/demystifying-oauth-security-state-vs-nonce-vs-pkce-2eo2</guid>
      <description>&lt;p&gt;Confused by the random strings in your OAuth URLs? You aren't alone. Many developers think &lt;code&gt;state&lt;/code&gt;, &lt;code&gt;nonce&lt;/code&gt;, and &lt;code&gt;code_challenge&lt;/code&gt; (PKCE) are redundant—but skipping just one could leave your users' accounts wide open to attackers like "Eve." In this video, I'll break down why these three parameters are like three different locks on three different doors. We’ll look at real-world attack scenarios and show you exactly how each one keeps your app secure.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡  What You’ll Learn:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The State Parameter:&lt;/strong&gt; How to prevent Cross-Site Request Forgery ($CSRF$) attacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Nonce Parameter:&lt;/strong&gt; Why ID tokens need protection against Replay attacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PKCE (Proof Key for Code Exchange):&lt;/strong&gt; Protecting mobile and single-page apps from Authorization Code Injection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Implementation Strategy:&lt;/strong&gt; Why you should use all three instead of picking just one.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔗 Links:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://auth0.com/blog/demystifying-oauth-security-state-vs-nonce-vs-pkce" rel="noopener noreferrer"&gt;Read the full blog post by Andrea Chiarelli&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce" rel="noopener noreferrer"&gt;Auth0 Docs - Why PKCE?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://oauth.net/2/security-topics/" rel="noopener noreferrer"&gt;OAuth 2.0 Security Best Practices&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you enjoy this content and want to learn more about identity, security, and access management, subscribe to our channel! &lt;/p&gt;

&lt;p&gt;Have a topic you'd like to see covered? Let us know if the comments below 👀 &lt;/p&gt;

</description>
      <category>oauth</category>
      <category>security</category>
      <category>software</category>
    </item>
    <item>
      <title>Auth0 for AI Agents is now generally available!</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Mon, 24 Nov 2025 16:32:18 +0000</pubDate>
      <link>https://forem.com/auth0/auth0-for-ai-agents-is-now-generally-available-29el</link>
      <guid>https://forem.com/auth0/auth0-for-ai-agents-is-now-generally-available-29el</guid>
      <description>&lt;p&gt;Hey DEV Community! 👋&lt;/p&gt;

&lt;p&gt;If you're building AI agents right now (and honestly, who isn't?), you've probably hit the auth problem. You know the one - where the quickest path to getting your agent working is to just hardcode some API keys and move on. It works great... until you need to actually ship to production.&lt;/p&gt;

&lt;p&gt;Today, we're excited to share that &lt;strong&gt;Auth0 for AI Agents is now generally available&lt;/strong&gt;, and it's designed to solve exactly this problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://auth0.com/signup?onboard_app=auth_for_aa&amp;amp;ocid=701KZ000000cXXxYAM_aPA4z0000008OZeGAM?utm_source=devto&amp;amp;utm_campaign=amer_namer_usa_all_ciam_dev_dg_plg_auth0_display_devto_display_aud_Q4_GAlaunch_nov2025_utm2&amp;amp;utm_medium=cpc&amp;amp;utm_id=aNKWR000002Z1ph4AC" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Auth0 for AI Agents&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

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


&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem with Hardcoded Credentials
&lt;/h2&gt;

&lt;p&gt;Let's be real: when you're prototyping an AI agent with LangChain or LlamaIndex, hardcoded credentials are the path of least resistance. Your agent needs to access Slack, GitHub, Google Calendar, or your own APIs, and frameworks make it easy to just plug in those keys.&lt;/p&gt;

&lt;p&gt;But production is a different story:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens when your agent needs to act on behalf of different users with different permissions?&lt;/li&gt;
&lt;li&gt;How do you handle token refreshing across 30+ different apps?&lt;/li&gt;
&lt;li&gt;How do you let users approve critical actions (like making purchases) without giving your agent carte blanche?&lt;/li&gt;
&lt;li&gt;How do you ensure your RAG-powered agent only accesses documents the user actually has permission to see?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren't edge cases - they're fundamental requirements for any AI agent that's going to interact with real user data and take real actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Built
&lt;/h2&gt;

&lt;p&gt;Auth0 for AI Agents gives you four key capabilities:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;User Authentication&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Secure and scalable &lt;a href="https://auth0.com/ai/docs/intro/user-authentication" rel="noopener noreferrer"&gt;User Authentication&lt;/a&gt; allows you to identify who's talking to your agent and give it secure access to your first-party APIs. Your agent can access user-specific data like order history, preferences, or chat logs - all scoped to the right permissions.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Token Vault&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://auth0.com/features/token-vault" rel="noopener noreferrer"&gt;Token Vault&lt;/a&gt; handles OAuth flows with 30+ pre-integrated apps (GitHub, Slack, Google Workspace, and more) plus any custom OAuth provider you want to connect. It manages access tokens, refresh tokens, and the whole lifecycle automatically. Your agent requests a connection, the user authorizes once, and you never have to think about token management again.&lt;/p&gt;

&lt;p&gt;The SDK detects when a tool call needs authentication, pauses execution, prompts the user to authenticate, stores the token securely, and resumes automatically. On subsequent calls, it just works.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Asynchronous Authorization&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Your agent can work in the background and only interrupt the user when it needs approval for critical actions. Using &lt;a href="https://auth0.com/docs/get-started/authentication-and-authorization-flow/client-initiated-backchannel-authentication-flow" rel="noopener noreferrer"&gt;Client-Initiated Backchannel Authentication (CIBA)&lt;/a&gt;, you can send approval requests via email or Auth0 Guardian (SMS coming soon). &lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;FGA for RAG&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When your agent uses Retrieval Augmented Generation to search through documents, it needs to respect access controls. &lt;a href="https://auth0.com/ai/docs/get-started/authorization-for-rag" rel="noopener noreferrer"&gt;Fine-Grained Authorization for RAG&lt;/a&gt; ensures that users only get answers from documents they actually have permission to access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;AI agents are moving from demos to production. The difference between a hackathon project and a real product often comes down to handling auth correctly. We built Auth0 for AI Agents because we kept hearing from developers that this was the hard part - not the LLM integration, not the prompt engineering, but the secure, user-scoped access to real systems.&lt;/p&gt;

&lt;p&gt;This isn't about adding features. It's about removing blockers so you can ship production-ready AI agents without building your own auth infrastructure from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Framework Support
&lt;/h2&gt;

&lt;p&gt;We've built SDKs for the frameworks you're already using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LangChain&lt;/strong&gt; (Python &amp;amp; JavaScript)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LlamaIndex&lt;/strong&gt; (Python &amp;amp; JavaScript)
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare AI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firebase Genkit&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vercel AI SDK&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each SDK handles the OAuth dance automatically, so you can focus on building your agent's capabilities, not wrestling with authentication flows.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;Our free tier includes two connected apps in Token Vault, async authorization, and all the core features you need to start building. As you scale, we have self-service plans that grow with you.&lt;/p&gt;

&lt;p&gt;Early-stage startups can apply for one year of Auth0 free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://auth0.com/signup?onboard_app=auth_for_aa&amp;amp;ocid=701KZ000000cXXxYAM_aPA4z0000008OZeGAM?utm_source=devto&amp;amp;utm_campaign=amer_namer_usa_all_ciam_dev_dg_plg_auth0_display_devto_display_aud_Q4_GAlaunch_nov2025_utm2&amp;amp;utm_medium=cpc&amp;amp;utm_id=aNKWR000002Z1ph4AC" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Start Building Today&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>auth0</category>
      <category>agents</category>
      <category>security</category>
      <category>ai</category>
    </item>
    <item>
      <title>Field Notes: Hacktoberfest 2025, Week 5</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Sat, 15 Nov 2025 05:00:00 +0000</pubDate>
      <link>https://forem.com/jesstemporal/field-notes-hacktoberfest-2025-week-5-88p</link>
      <guid>https://forem.com/jesstemporal/field-notes-hacktoberfest-2025-week-5-88p</guid>
      <description>&lt;p&gt;After GitHub Universe, recovering from a nasty cold, and a lot of work, I know I’m a bit late but here it goes: Final week of Hacktoberfest 2025 report!&lt;/p&gt;

&lt;h2&gt;
  
  
  GitFichas
&lt;/h2&gt;

&lt;p&gt;After the “&lt;em&gt;big slow down&lt;/em&gt;”, we actually saw some more engagement by the community with 5 pull requests in Hacktoberfest’s last week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5 PRs by the community 

&lt;ul&gt;
&lt;li&gt;3 merged&lt;/li&gt;
&lt;li&gt;2 open&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I, on the other hand, got Copilot to work on a few issues 👀: 35 pull requests by AI, all merged. This meant great progress was made and that huge bump in the last days of October in the burn up chart below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmndzw3hf6vw0g10pa4cu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmndzw3hf6vw0g10pa4cu.png" alt="Burnup chart showing GitFichas progress for week 5" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The gap between closed and open issues is still there. I still plan to finish migrating the hand-drawn cards to mermaid before the end of the year but I also want to reach the 100 cards published number, let’s see how it goes.&lt;/p&gt;

&lt;p&gt;Here’s the distribution of pull requests worked on in the last week of Hacktoberfest:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv43ciosdwldgmeimjncj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv43ciosdwldgmeimjncj.png" alt="Bar chart showing pull request type distribution for week 5 of Hacktoberfest 2025" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looking at the pull requests for the whole month of October, you can see that shift between a lot of translation pull requests in the beginning of the month to more migrations at the end of October in the chart below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vra8to2fg9jjrf1qwul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vra8to2fg9jjrf1qwul.png" alt="Line chart showing weekly distribution of pull requests throughout October 2025" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As far as issues go, the distribution is similar. Some PRs closed more than one issue and some PRs had no issues attached to them, so the numbers vary a bit between merged PRs and closed issues, but the distribution is similar on both:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfxck6ell3hslawo4f02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfxck6ell3hslawo4f02.png" alt="Line chart showing weekly distribution of closed issues throughout October 2025" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Other projects
&lt;/h2&gt;

&lt;p&gt;I went back to those PRs I left hanging and worked on them. And now I’m off to work on other stuff, especially some content I want to work on through the end of this year beginning of next one.&lt;/p&gt;




&lt;p&gt;With this report we close a successful Hacktoberfest 2025. I was not expecting so many people interested in contributing to GitFichas, and I was very happy to review every pull request that came through.&lt;/p&gt;

&lt;p&gt;I hope the folks contributing also had an amazing time as I did.&lt;/p&gt;

&lt;p&gt;Happy hacking and see you next year 🎃&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>git</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Hacktoberfest 2025: Diário de Campo, Semana 5</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Sat, 15 Nov 2025 04:00:00 +0000</pubDate>
      <link>https://forem.com/jesstemporal/hacktoberfest-2025-diario-de-campo-semana-5-16m</link>
      <guid>https://forem.com/jesstemporal/hacktoberfest-2025-diario-de-campo-semana-5-16m</guid>
      <description>&lt;p&gt;Depois do GitHub Universe, de me recuperar de uma gripe horrível, e de muito trabalho, eu sei que estou meio atrasada mas aqui vai: relatório da última semana da Hacktoberfest 2025!&lt;/p&gt;

&lt;h2&gt;
  
  
  GitFichas
&lt;/h2&gt;

&lt;p&gt;Depois da “&lt;em&gt;grande desaceleração&lt;/em&gt;”, a comunidade voltou a se engajar mais com 5 pull requests na última semana da Hacktoberfest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5 PRs da comunidade 

&lt;ul&gt;
&lt;li&gt;3 mergeados&lt;/li&gt;
&lt;li&gt;2 abertos&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Já eu, consegui colocar o Copilot pra trabalhar em algumas issues 👀: 35 pull requests feitos por IA, todos mergeados. Isso resultou num progresso incrível e naquele grande pico no final de outubro que você vê no gráfico burnup abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmndzw3hf6vw0g10pa4cu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmndzw3hf6vw0g10pa4cu.png" alt="Gráfico burnup mostrando o progresso do GitFichas para a semana 5" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A diferença entre issues fechadas e abertas ainda continua lá. Minha meta ainda é terminar de migrar as fichas desenhadas à mão para mermaid antes do final do ano, mas também quero chegar nas 100 fichas publicadas, vamos ver o que vai dar.&lt;/p&gt;

&lt;p&gt;Assim ficou a distribuição dos pull requests na última semana da Hacktoberfest:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv43ciosdwldgmeimjncj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv43ciosdwldgmeimjncj.png" alt="Gráfico de barras mostrando a distribuição de tipos de pull request para a semana 5 da Hacktoberfest 2025" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Olhando pro mês de outubro como um todo, dá pra ver bem aquela mudança de foco: no começo do mês rolaram muitos pull requests de tradução, e no final foram mais migrações, como mostra o gráfico abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vra8to2fg9jjrf1qwul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vra8to2fg9jjrf1qwul.png" alt="Gráfico de linha mostrando a distribuição semanal de pull requests ao longo de outubro de 2025" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sobre as issues, o padrão é parecido. Alguns PRs resolveram várias issues de uma vez e outros não estavam associados a nenhuma issue específica, então os números ficaram um pouco diferentes entre PRs mergeados e issues fechadas, mas a tendência geral é a mesma:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfxck6ell3hslawo4f02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfxck6ell3hslawo4f02.png" alt="Gráfico de linha mostrando a distribuição semanal de issues fechadas ao longo de outubro de 2025" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros projetos
&lt;/h2&gt;

&lt;p&gt;Voltei naqueles PRs que tinha deixado pra lá e consegui finalizar eles. Agora vou focar em outras coisas, principalmente uns conteúdos que quero terminar durante o final desse ano e começo do ano novo.&lt;/p&gt;




&lt;p&gt;E com esse relatório a gente encerra uma Hacktoberfest 2025 na minha opinião super bem-sucedida. Não imaginava que tanta gente ia se interessar em contribuir pro GitFichas, e adorei revisar cada pull request que apareceu por lá.&lt;/p&gt;

&lt;p&gt;Espero que quem contribuiu também tenha curtido esse momento tanto quanto eu.&lt;/p&gt;

&lt;p&gt;Espero te ver ano que vem para Hacktoberfest 2026 🎃&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>git</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Field Notes: Hacktoberfest 2025, Week 4</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Mon, 27 Oct 2025 04:00:00 +0000</pubDate>
      <link>https://forem.com/jesstemporal/field-notes-hacktoberfest-2025-week-4-4jl1</link>
      <guid>https://forem.com/jesstemporal/field-notes-hacktoberfest-2025-week-4-4jl1</guid>
      <description>&lt;p&gt;We are so close to the end of Hacktoberfest I can almost smell it. With one week left to go let’s take a look into how last week went.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitFichas
&lt;/h2&gt;

&lt;p&gt;After the “&lt;em&gt;big slow down&lt;/em&gt;”, this week continued the trend of lower amount of pull requests received with only 8 pull requests for last week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8 PRs by the community 

&lt;ul&gt;
&lt;li&gt;7 merged&lt;/li&gt;
&lt;li&gt;1 closed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I didn’t make any pull requests to GitFichas as I was working on a big pull request for work I’ll love to share on next week’s report.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1my6sbalih7nfxb46i7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1my6sbalih7nfxb46i7.jpg" alt="GitFichas repository showing no open pull requests" width="800" height="827"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On other news, this weekend was the first time that GitFichas had no PRs open since the beginning of Hacktoberfest and to be honest this worked out great for me as I was spending most of my Saturday preparing to travel to GitHub Universe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fui8slqqfvdz3bjcjlr21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fui8slqqfvdz3bjcjlr21.png" alt="Burnup chart showing GitFichas progress for week 4" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The gap between closed and open issues is still there, from my side, since my plan is to finish migrating the hand-drawn cards to mermaid before the end of the year, I plan to start tackling some of the open migration issues with the help of Copilot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/jtemporal/gitfichas/issues/385" rel="noopener noreferrer"&gt;Migrate all English 🇺🇸 cards to Mermaid&lt;/a&gt;: 27 issues to go&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jtemporal/gitfichas/issues/65" rel="noopener noreferrer"&gt;Migrate all Portuguese 🇧🇷 cards to mermaid&lt;/a&gt;: 36 issues to go&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contributor Badges
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest is not over yet! You can still make your contributions and earn at least the 4 of the 6 badge levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;level 0 is for registering to Hacktoberfest&lt;/li&gt;
&lt;li&gt;levels 1 through 4 are for making the 4 pull requests while contributing to open source&lt;/li&gt;
&lt;li&gt;level 5 is the supercontributor badge you get while completing 6 pull requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;| &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdkf3n36c8bdxa7jw5ws.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.amazonaws.com%2Fuploads%2Farticles%2Fsdkf3n36c8bdxa7jw5ws.webp" alt="Hacktoberfest Level 0 badge" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmfugxuyz0001l104bsvhumlx" rel="noopener noreferrer"&gt;Level 0&lt;/a&gt; | &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnyxznnkh119ijf12j2gt.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.amazonaws.com%2Fuploads%2Farticles%2Fnyxznnkh119ijf12j2gt.webp" alt="Hacktoberfest Level 1 badge" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjivt9x004wjv04tj9hiamp" rel="noopener noreferrer"&gt;Level 1&lt;/a&gt; |&lt;br&gt;
| &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdac59qkj2t6ys65pm7a.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.amazonaws.com%2Fuploads%2Farticles%2Fbdac59qkj2t6ys65pm7a.webp" alt="Hacktoberfest Level 2 badge" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjo5qd00047ld0487evw3y2" rel="noopener noreferrer"&gt;Level 2&lt;/a&gt; | &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzi6egpbpaff3dpxhs5t.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.amazonaws.com%2Fuploads%2Farticles%2Fvzi6egpbpaff3dpxhs5t.webp" alt="Hacktoberfest Level 3 badge" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjtgwh800gbjo04fzjw6zev" rel="noopener noreferrer"&gt;Level 3&lt;/a&gt; |&lt;br&gt;
| &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkhpzqnbxn20e7npfu8wy.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.amazonaws.com%2Fuploads%2Farticles%2Fkhpzqnbxn20e7npfu8wy.webp" alt="Hacktoberfest Level 4 badge" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjth6e9003wjr048lfiogn8" rel="noopener noreferrer"&gt;Level 4&lt;/a&gt; | &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz51xasy7qr1nho502rj.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.amazonaws.com%2Fuploads%2Farticles%2Fcz51xasy7qr1nho502rj.webp" alt="Hacktoberfest Supercontributor badge" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjthekm004ol204irxkgqp6" rel="noopener noreferrer"&gt;Supercontributor&lt;/a&gt; |&lt;/p&gt;

&lt;p&gt;I also got the &lt;strong&gt;Plant a tree&lt;/strong&gt; and &lt;strong&gt;1 Badge Club&lt;/strong&gt; , the first is for the tree planted when you get the shirt for completing 6 PRs, and the second is for anyone that has gotten a Hacktoberfest badge since 2022:&lt;/p&gt;

&lt;p&gt;| &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1hucf3ock35p1h2ff1gs.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.amazonaws.com%2Fuploads%2Farticles%2F1hucf3ock35p1h2ff1gs.webp" alt="Hacktoberfest Plant a tree badge" width="720" height="720"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/userbadge/cmgjtujb20075jr04ik32pbcn" rel="noopener noreferrer"&gt;Plant a tree&lt;/a&gt; | &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwt4dc8xncm4kdhtq6l0.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.amazonaws.com%2Fuploads%2Farticles%2Fuwt4dc8xncm4kdhtq6l0.webp" alt="Hacktoberfest 1 Badge Club badge" width="720" height="720"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/userbadge/cmgzybiwe01pnl204bktxtxdt" rel="noopener noreferrer"&gt;1 Badge Club&lt;/a&gt; |&lt;/p&gt;




&lt;p&gt;I know this was a short one but that’s a wrap for week 4! See you soon for the final report on Hacktoberfest 2025. 🎃&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>git</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Hacktoberfest 2025: Diário de Campo, Semana 4</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Sun, 26 Oct 2025 04:00:00 +0000</pubDate>
      <link>https://forem.com/jesstemporal/hacktoberfest-2025-diario-de-campo-semana-4-42dh</link>
      <guid>https://forem.com/jesstemporal/hacktoberfest-2025-diario-de-campo-semana-4-42dh</guid>
      <description>&lt;p&gt;Estamos tão perto do final da Hacktoberfest que já dá pra sentir o cheiro. Com menos de uma semana para o fim da Hacktoberfest, vamos dar uma olhada em como foi a semana passada.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitFichas
&lt;/h2&gt;

&lt;p&gt;Após a “&lt;em&gt;grande desaceleração&lt;/em&gt;”, essa semana continuou a tendência com uma menor quantidade de pull requests recebidos: apenas 8 pull requests foram recebidos nessa semana que passou.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8 PRs da comunidade: 

&lt;ul&gt;
&lt;li&gt;7 mergeados&lt;/li&gt;
&lt;li&gt;1 fechado&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Eu não fiz nenhum pull request para o GitFichas pois estava trabalhando num pull request gigante para o trabalho que pretendo compartilhar mais sobre em breve.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1my6sbalih7nfxb46i7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1my6sbalih7nfxb46i7.jpg" alt="Repositório GitFichas mostrando nenhum pull request aberto" width="800" height="827"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por outro lado, este final de semana foi a primeira vez que o GitFichas não teve PRs abertos desde o começo da Hacktoberfest e para ser honesta, pra mim isso funcionou super bem, já que eu passei a maior parte do meu sábado me preparando para viajar para o GitHub Universe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fui8slqqfvdz3bjcjlr21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fui8slqqfvdz3bjcjlr21.png" alt="Gráfico burnup mostrando o progresso do GitFichas para a semana 4" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lacuna entre issues fechadas e abertas ainda está lá, mas meu plano é terminar de migrar as fichas desenhadas à mão para mermaid antes do final do ano. Vou focar em algumas das issues de migração abertas com a ajuda do Copilot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/jtemporal/gitfichas/issues/385" rel="noopener noreferrer"&gt;Migrar todos as fichas em inglês 🇺🇸 para Mermaid&lt;/a&gt;: 27 issues restantes&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jtemporal/gitfichas/issues/65" rel="noopener noreferrer"&gt;Migrar todos as fichas em português 🇧🇷 para mermaid&lt;/a&gt;: 36 issues restantes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Medalhas de contribuição
&lt;/h2&gt;

&lt;p&gt;Vale salientar que a Hacktoberfest ainda não acabou! Você ainda pode fazer suas contribuições e conquistar 4 dos 6 níveis de medalhas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nível 0 é por se registrar no Hacktoberfest&lt;/li&gt;
&lt;li&gt;níveis 1 a 4 são para fazer os 4 pull requests contribuindo para open source&lt;/li&gt;
&lt;li&gt;nível 5 é a medalha para pessoas supercontribuidoras que você ganha ao completar 6 pull requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;| &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdkf3n36c8bdxa7jw5ws.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.amazonaws.com%2Fuploads%2Farticles%2Fsdkf3n36c8bdxa7jw5ws.webp" alt="Badge Hacktoberfest Nível 0" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmfugxuyz0001l104bsvhumlx" rel="noopener noreferrer"&gt;Nível 0&lt;/a&gt; | &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnyxznnkh119ijf12j2gt.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.amazonaws.com%2Fuploads%2Farticles%2Fnyxznnkh119ijf12j2gt.webp" alt="Badge Hacktoberfest Nível 1" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjivt9x004wjv04tj9hiamp" rel="noopener noreferrer"&gt;Nível 1&lt;/a&gt; |&lt;br&gt;
| &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdac59qkj2t6ys65pm7a.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.amazonaws.com%2Fuploads%2Farticles%2Fbdac59qkj2t6ys65pm7a.webp" alt="Badge Hacktoberfest Nível 2" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjo5qd00047ld0487evw3y2" rel="noopener noreferrer"&gt;Nível 2&lt;/a&gt; | &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzi6egpbpaff3dpxhs5t.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.amazonaws.com%2Fuploads%2Farticles%2Fvzi6egpbpaff3dpxhs5t.webp" alt="Badge Hacktoberfest Nível 3" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjtgwh800gbjo04fzjw6zev" rel="noopener noreferrer"&gt;Nível 3&lt;/a&gt; |&lt;br&gt;
| &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkhpzqnbxn20e7npfu8wy.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.amazonaws.com%2Fuploads%2Farticles%2Fkhpzqnbxn20e7npfu8wy.webp" alt="Badge Hacktoberfest Nível 4" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjth6e9003wjr048lfiogn8" rel="noopener noreferrer"&gt;Nível 4&lt;/a&gt; | &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz51xasy7qr1nho502rj.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.amazonaws.com%2Fuploads%2Farticles%2Fcz51xasy7qr1nho502rj.webp" alt="Badge Hacktoberfest Supercontribuidor" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/hacktoberfest2025/userbadge/cmgjthekm004ol204irxkgqp6" rel="noopener noreferrer"&gt;Supercontribuidor&lt;/a&gt; |&lt;/p&gt;

&lt;p&gt;Também consegui as medalhas &lt;strong&gt;Plant a tree&lt;/strong&gt; e &lt;strong&gt;1 Badge Club&lt;/strong&gt; , a primeira é pela árvore plantada quando você ganha a camiseta por completar 6 PRs, e a segunda é para qualquer pessoa que já tenha conseguido uma medalha Hacktoberfest desde 2022:&lt;/p&gt;

&lt;p&gt;| &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1hucf3ock35p1h2ff1gs.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.amazonaws.com%2Fuploads%2Farticles%2F1hucf3ock35p1h2ff1gs.webp" alt="Badge Hacktoberfest Plant a tree" width="720" height="720"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/userbadge/cmgjtujb20075jr04ik32pbcn" rel="noopener noreferrer"&gt;Plant a tree&lt;/a&gt; | &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwt4dc8xncm4kdhtq6l0.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.amazonaws.com%2Fuploads%2Farticles%2Fuwt4dc8xncm4kdhtq6l0.webp" alt="Badge Hacktoberfest 1 Badge Club" width="720" height="720"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.holopin.io/userbadge/cmgzybiwe01pnl204bktxtxdt" rel="noopener noreferrer"&gt;1 Badge Club&lt;/a&gt; |&lt;/p&gt;




&lt;p&gt;Esse foi um relatório menorzinho que os dois ultimos, mas por hoje é só! Te vejo em breve para o relatório final do Hacktoberfest 2025. 🎃&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>git</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Field Notes: Hacktoberfest 2025, Week 3</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Tue, 21 Oct 2025 04:00:00 +0000</pubDate>
      <link>https://forem.com/jesstemporal/field-notes-hacktoberfest-2025-week-3-8jp</link>
      <guid>https://forem.com/jesstemporal/field-notes-hacktoberfest-2025-week-3-8jp</guid>
      <description>&lt;p&gt;We crossed over the halfway point of Hacktoberfest 2025 and here is what happened in my little corner of the open source world. In this series we overview some stats for contributions I received and made over this month. This week, like the last, I mostly focused on GitFichas due to limited availability, but I also implemented some new features on my blog so let’s go into the contributions.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitFichas
&lt;/h2&gt;

&lt;p&gt;Like always, third week of Hacktoberfest symbolizes the big “&lt;em&gt;slow down&lt;/em&gt;”, where the volume from contributions from the first few weeks dip after many folks complete their 4 or 6 pull requests. So after the high from last week, this week we had 30 pull requests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;23 PRs by the community 

&lt;ul&gt;
&lt;li&gt;17 merged&lt;/li&gt;
&lt;li&gt;5 closed&lt;/li&gt;
&lt;li&gt;1 open&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Interestingly enough I tried having copilot draft a PR and it actually, did a good job. I also merged 6 PRs myself which were 2 for documentation, 2 for corrections, and 2 for improvements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9m6nftk8ouqcas2qbtg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9m6nftk8ouqcas2qbtg.jpg" alt="A screenshot showing GitFichas repository statistics with pull request counts and contribution metrics" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most exciting part for the week for me at least, was that on October 15th we reached the mark of over 100 issues closed. Which marks the milestone of more issues closed than open for GitFichas. 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rcogjc1pxbbayve7wvd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rcogjc1pxbbayve7wvd.jpg" alt="GitFichas repository showing milestone of 100+ closed issues, demonstrating project progress" width="594" height="904"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also worked on improving descriptions for some issues that were open a long time ago.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygaskchmyctybst8sltf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygaskchmyctybst8sltf.jpg" alt="Screenshot of GitHub issue improvement work showing better descriptions and titles for GitFichas issues" width="800" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As far as inviting people to contributing to your project, it is fundamental that you have both good descriptions &lt;em&gt;and&lt;/em&gt; good titles since in the list of issues every contributor sees mostly the titles and tags. I did some automating to help make this easier on me and help me with maintenance tasks but I’ll write about that in a separate post later. 👀&lt;/p&gt;

&lt;p&gt;Still on the issues subject this is the burn up chart since September 1st there’s still a gap but the trend is clear: the opening of issues is slowing down, and the closing of them is bridging the gap.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3740s3iqrd362vcbi6x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3740s3iqrd362vcbi6x.jpg" alt="Burn up chart showing GitFichas issue trends from September 1st, with lines indicating opened vs closed issues over time" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One final thing: &lt;a href="https://github.com/jtemporal/gitfichas/pull/418" rel="noopener noreferrer"&gt;someone decided to implement a search bar on GitFichas&lt;/a&gt;, there wasn’t an issue for this but it is something I definitely thought about having on the website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7k2c0lnl2zaysckj5ect.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7k2c0lnl2zaysckj5ect.png" alt="GitFichas website homepage showing the new search bar feature implemented by a community contributor" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A search function is not a tiny thing, especially if you don’t have a database for indexing the content. Nonetheless someone implemented it and I do believe it will help others find cards more easily! So another big win of open source! 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  The blog
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://github.com/jtemporal/jtemporal.github.io" rel="noopener noreferrer"&gt;On the blog side&lt;/a&gt;, I worked on three main things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Series of posts&lt;/li&gt;
&lt;li&gt;Subtitles for posts&lt;/li&gt;
&lt;li&gt;New covers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s dive in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Series in a blog
&lt;/h3&gt;

&lt;p&gt;Two weeks ago I implemented a series widget so anyone reading the posts can quickly jump to other posts in the same collection much like the “Related Articles” or “Recent Articles” widgets I already have.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw7uouup9juo2sx6w9795.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw7uouup9juo2sx6w9795.jpg" alt="Blog post showing the new series widget that allows readers to navigate between posts in the same series" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until Saturday it was impossible to link to a series, so I set on to fix that and create a way to link to a series so I could refer to series without linking out to an specific blog post.&lt;/p&gt;

&lt;p&gt;To get series pages, I could think of a few ways to implement the behaviour:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Separate series into collections&lt;/strong&gt; : I’ve created collections before, but in this case collections is not a great solution as it would separate the posts away from the rest of posts;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manually create a page for each series&lt;/strong&gt; : not scalable, that would create a bunch of other files for me to maintain;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugins&lt;/strong&gt; : hear me out, plugins felt like the right way to go given the fact that I could write a ruby script to automatically generate pages but you can’t use custom plugins on GitHub Pages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After some consideration, and talking to Copilot, I felt confident that writing a custom plugin was the way to go but since my blog was served through GitHub Pages I needed to find a different way to deploy the blog, and I was not about to commit the built site to GitHub.&lt;/p&gt;

&lt;p&gt;Since I already use Netlify to preview the pull requests for both the blog and GitFichas, it felt like a natural step to migrate production deployment to Netlify as well. So I’d like to inform you all ladies and gentlemen, that I graduated from serving the production site from GitHub Pages to Netlify. I feel so much like a grown up dev. 🤣&lt;/p&gt;

&lt;p&gt;With Copilot’s help I &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/354/commits/db2e1e94f49bb3a7c134c35cad37b0b40b0f2bda" rel="noopener noreferrer"&gt;implemented the plugin&lt;/a&gt; and successfully migrated prod to Netlify, I’ll probably write a post on this later.&lt;/p&gt;

&lt;p&gt;Here are some of the series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jtemporal.com/series/git-pro-tips/" rel="noopener noreferrer"&gt;Git Pro Tips&lt;/a&gt;:&lt;/strong&gt; All about Git covering: conflicts, branches, rebase, and GitHub workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jtemporal.com/series/hacktoberfest-2025-weekly/" rel="noopener noreferrer"&gt;Hacktoberfest 2025 Weekly&lt;/a&gt;:&lt;/strong&gt; Weekly updates about Hacktoberfest 2025 on GitFichas and other projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jtemporal.com/series/mcp-mastery/" rel="noopener noreferrer"&gt;MCP Mastery&lt;/a&gt;:&lt;/strong&gt; All you need to know about Model Context Protocol (MCP).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These and all others are available &lt;a href="https://jtemporal.com/series" rel="noopener noreferrer"&gt;in the series page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Subtitles for posts
&lt;/h3&gt;

&lt;p&gt;Another thing I always wanted to do was to have subtitles on some posts. This weekend I figured out it was time, and so after some &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/352" rel="noopener noreferrer"&gt;Liquid magic and some CSS adjustments&lt;/a&gt; I’m happy to inform that I can now have posts with title and subtitles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fekh2rccee0vwyqqf74n7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fekh2rccee0vwyqqf74n7.jpg" alt="Blog post layout showing the new subtitle feature implementation with title and subtitle styling" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just in time too for my fairy tale post.&lt;/p&gt;

&lt;h3&gt;
  
  
  New covers
&lt;/h3&gt;

&lt;p&gt;If you are asking yourself “&lt;em&gt;what fairy tale post?&lt;/em&gt;” well I also started to get a bit annoyed at the fact the covers in the blog were too repetitive lately since the last 14 posts had all the same cover.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jtemporal.com/the-writer-and-the-bot-fairy-tale/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furgrkvx3l2h1lrw8b6um.png" alt="Illustration of a writer looking at scrolls, representing the fairy tale blog post cover" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So it was time to create a few more covers and put them to good use, &lt;a href="https://jtemporal.com/the-writer-and-the-bot-fairy-tale/" rel="noopener noreferrer"&gt;I tell the story of it here in this other post&lt;/a&gt;, which I strongly encourage you to read because it is in the form of a fairy tale, but here’s the TL;DR: I noticed the repeated covers, &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/351" rel="noopener noreferrer"&gt;opened an issue, and had copilot do the code adjustments&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Super contributor status
&lt;/h2&gt;

&lt;p&gt;Finally this week I updated my Holopin profile to show off my Hacktoberfest “supercontributor” badge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp8kivukugzv9blkk9n5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp8kivukugzv9blkk9n5.png" alt="An image of @jesstemporal's Holopin badges, which is a link to view their full Holopin profile" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And shirt is already here too!&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%2Fres.cloudinary.com%2Fjesstemporal%2Fimage%2Fupload%2Fv1760926902%2Fimages%2Fhacktoberfest-2025-w3%2FIMG_5971_wqmhfe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fjesstemporal%2Fimage%2Fupload%2Fv1760926902%2Fimages%2Fhacktoberfest-2025-w3%2FIMG_5971_wqmhfe.jpg" alt="Hacktoberfest 2025 supercontributor shirt in light color, representing the limited edition reward for top contributors" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I prefer shirts with dark colors but this one feels special, since only 10,000 will be given away and this one has GitFichas written all over it. 😊&lt;/p&gt;




&lt;p&gt;That’s a wrap for week 3! See you next week for Hacktoberfest 2025 week 4 report. 👻&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>git</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Hacktoberfest 2025: Diário de Campo, Semana 3</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Mon, 20 Oct 2025 03:00:00 +0000</pubDate>
      <link>https://forem.com/jesstemporal/hacktoberfest-2025-diario-de-campo-semana-3-3gia</link>
      <guid>https://forem.com/jesstemporal/hacktoberfest-2025-diario-de-campo-semana-3-3gia</guid>
      <description>&lt;p&gt;Passamos da metade da Hacktoberfest 2025 e bora falar do que aconteceu por aqui no meu cantinho do mundo open source.&lt;/p&gt;

&lt;p&gt;Nessa semana, mais uma vez com tempo limitado, foquei no GitFichas mas também implementei algumas funcionalidades novas no meu blog, então bora falar de contribuições.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitFichas
&lt;/h2&gt;

&lt;p&gt;Como sempre, a terceira semana do Hacktoberfest simboliza a grande “&lt;em&gt;desaceleração&lt;/em&gt;”, onde o volume de contribuições das primeiras semanas diminui já que muitas pessoas já completaram seus 4 ou 6 pull requests. Então depois do pico da semana passada, esta semana tivemos 30 pull requests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;23 PRs da comunidade: 

&lt;ul&gt;
&lt;li&gt;17 merged&lt;/li&gt;
&lt;li&gt;5 fechados&lt;/li&gt;
&lt;li&gt;1 aberto&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Curiosamente eu coloquei o Copilot escrever um PR e ele até que fez um bom trabalho. Eu também fiz merge de 6 PRs meus: 2 com documentação, 2 com correções, e 2 com melhorias.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9m6nftk8ouqcas2qbtg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9m6nftk8ouqcas2qbtg.jpg" alt="Uma captura de tela mostrando estatísticas do repositório GitFichas com contagens de pull request e métricas de contribuição" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A parte mais empolgante da semana para mim pelo menos, foi que no dia 15 de outubro chegamos à marca de mais de 100 issues fechadas. O que marca o momento em que temos mais issues fechadas do que abertas no GitFichas. 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rcogjc1pxbbayve7wvd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rcogjc1pxbbayve7wvd.jpg" alt="Repositório GitFichas mostrando milestone de 100+ issues fechadas, demonstrando progresso do projeto" width="594" height="904"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eu também trabalhei em melhorar descrições para algumas issues que estavam abertas há muito tempo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygaskchmyctybst8sltf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygaskchmyctybst8sltf.jpg" alt="Captura de tela do trabalho de melhoria de issues do GitHub mostrando melhores descrições e títulos para issues do GitFichas" width="800" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Falando de convidar pessoas para contribuir com o seu projeto, é fundamental que você tenha tanto boas descrições &lt;em&gt;quanto&lt;/em&gt; bons títulos, já que na lista de issues pessoas vêem principalmente os títulos e tags de cada issue.&lt;/p&gt;

&lt;p&gt;Fiz também algumas automações para identificar essas issues que precisavam de ajuste mais facilmente e outras automações para me ajudar com tarefas de manutenção, mas vou escrever sobre isso em um post separado mais pra frente. 👀&lt;/p&gt;

&lt;p&gt;Ainda no assunto das issues, aqui em baixo temos o gráfico burn up desde 1º de setembro ainda há um vão, mas a tendência é clara: a abertura de issues está desacelerando, e o fechamento delas está quase fechando o vão.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3740s3iqrd362vcbi6x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3740s3iqrd362vcbi6x.jpg" alt="Gráfico burn up mostrando tendências de issues do GitFichas desde 1º de setembro, com linhas indicando issues abertas vs fechadas ao longo do tempo" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma última coisa: &lt;a href="https://github.com/jtemporal/gitfichas/pull/418" rel="noopener noreferrer"&gt;alguém decidiu implementar uma barra de pesquisa no GitFichas&lt;/a&gt;, não havia uma issue para isso mas é algo que eu definitivamente pensei em ter no site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31z6fzolr74fnct1ojja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31z6fzolr74fnct1ojja.png" alt="Homepage do site GitFichas mostrando o novo recurso de barra de pesquisa implementado por um contribuidor da comunidade" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma função de busca não é uma coisa pequena, especialmente se você não tem um banco de dados para indexar o conteúdo. Mesmo assim alguém implementou uma forma de pesquisar fichas e eu acredito que vai ajudar outras pessoas a encontrarem fichas mais facilmente! Mais uma grande vitória do open source! 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  O blog
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://github.com/jtemporal/jtemporal.github.io" rel="noopener noreferrer"&gt;No lado do blog&lt;/a&gt;, trabalhei principalmente em três coisas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Séries de posts&lt;/li&gt;
&lt;li&gt;Subtítulos para posts&lt;/li&gt;
&lt;li&gt;Novas capas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bora lá.&lt;/p&gt;

&lt;h3&gt;
  
  
  Séries de posts no blog
&lt;/h3&gt;

&lt;p&gt;Duas semanas atrás implementei um widget de séries para que alguém lendo os posts possa pular rapidamente para outros posts na mesma coleção, muito parecido com os widgets de “&lt;em&gt;Artigos Relacionados&lt;/em&gt;” ou de “&lt;em&gt;Artigos Recentes&lt;/em&gt;” que eu já tenho.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg56a4duwb452hxi598px.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg56a4duwb452hxi598px.jpg" alt="Post do blog mostrando o novo widget de séries que permite aos leitores navegar entre posts da mesma série" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Até sábado era impossível linkar para uma série, então esse final de semana eu disse que estava na hora de corrigir isso. Principalmente para que eu pudesse compartilhar uma série sem linkar para um post específico que fizesse parte da série.&lt;/p&gt;

&lt;p&gt;Eu queria ter uma página por série, e eu consegui pensar em algumas formas de implementar isso:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Separar séries em &lt;em&gt;collections&lt;/em&gt;&lt;/strong&gt; : Já criei coleções antes, mas neste caso &lt;em&gt;collections&lt;/em&gt; não é uma boa solução pois separaria os posts do resto dos posts;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Criar manualmente uma página para cada série&lt;/strong&gt; : não escalável, isso criaria um monte de outros arquivos para eu manter fora que toda nova série eu precisaria uma página nova, apenas não;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugins&lt;/strong&gt; : veja bem, plugins pareciam o caminho certo a seguir dado o fato de que eu poderia escrever um script ruby para gerar páginas automaticamente, mas se o seu site é deployado pelo GitHub Pages, tenho más notícias: não se pode usar &lt;em&gt;custom plugins&lt;/em&gt; no GitHub Pages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Depois de algumas considerações, e conversando com o Copilot, me senti confiante de que escrever um plugin customizado era o caminho certo, mas como meu blog era servido através do GitHub Pages eu precisava encontrar uma forma diferente de fazer o deploy do blog, e eu não estava disposta a fazer commit do site buildado no GitHub.&lt;/p&gt;

&lt;p&gt;Como eu já uso Netlify para preview dos pull requests tanto do blog quanto do GitFichas, pareceu um passo natural migrar o deployment de produção para o Netlify também. Então gostaria de informar vocês, senhoras e senhores, que agora eu sou uma dev que saiu do GitHub Pages para o Netlify para servir prod do meu site e eu me sinto como uma dev premium. 🤣&lt;/p&gt;

&lt;p&gt;Com a ajuda do Copilot eu &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/354/commits/db2e1e94f49bb3a7c134c35cad37b0b40b0f2bda" rel="noopener noreferrer"&gt;implementei o plugin&lt;/a&gt; e migrei com sucesso prod para Netlify, provavelmente vou escrever um post sobre isso em breve.&lt;/p&gt;

&lt;p&gt;Aqui estão algumas das séries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jtemporal.com/series-pt/dicas-de-git/" rel="noopener noreferrer"&gt;Dicas de Git&lt;/a&gt;:&lt;/strong&gt; Tudo sobre Git cobrindo: conflitos, branches, rebase e fluxos GitHub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jtemporal.com/series-pt/hacktoberfest-2025/" rel="noopener noreferrer"&gt;Hacktoberfest 2025&lt;/a&gt;:&lt;/strong&gt; Atualizações semanais sobre Hacktoberfest 2025 no GitFichas e outros projetos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jtemporal.com/series-pt/dominando-mcp/" rel="noopener noreferrer"&gt;Dominando MCP&lt;/a&gt;:&lt;/strong&gt; Tudo o que você precisa saber sobre Model Context Protocol (MCP).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essas e todas as outras estão disponíveis &lt;a href="https://jtemporal.com/series-pt" rel="noopener noreferrer"&gt;na página de séries&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Subtítulos para posts
&lt;/h3&gt;

&lt;p&gt;Outra coisa que sempre quis fazer: ter subtítulos em alguns posts. Este fim de semana decidi que era hora, e então depois de um pouco de &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/352" rel="noopener noreferrer"&gt;magia Liquid e alguns ajustes CSS&lt;/a&gt; estou feliz em informar que agora posso ter posts com título e subtítulos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2h709pc73bk0apvxi0m.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2h709pc73bk0apvxi0m.jpg" alt="Layout de post do blog mostrando a implementação do novo recurso de subtítulo com estilo de título e subtítulo" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bem na hora para o meu post com um conto de fadas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Novas capas
&lt;/h3&gt;

&lt;p&gt;Se você está se perguntando “&lt;em&gt;que post de conto de fadas?&lt;/em&gt;” bem, eu também comecei a ficar um pouco incomodada com o fato de que as capas no blog estavam muito repetitivas ultimamente, já que os últimos 14 posts tinham &lt;strong&gt;todos&lt;/strong&gt; a &lt;strong&gt;mesma&lt;/strong&gt; capa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jtemporal.com/a-escritora-e-o-bot-conto-de-fadas/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furgrkvx3l2h1lrw8b6um.png" alt="Ilustração de uma escritora olhando pergaminhos, representando a capa do post do conto de fadas" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Então chegou a hora de criar algumas capas a mais e colocá-las em bom uso, &lt;a href="https://jtemporal.com/a-escritora-e-o-bot-conto-de-fadas/" rel="noopener noreferrer"&gt;eu conto a história aqui neste outro post&lt;/a&gt;, que eu encorajo fortemente você a ler porque está na forma de um conto de fadas, mas aqui está o TL;DR: notei as capas repetidas, &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/351" rel="noopener noreferrer"&gt;abri uma issue, fiz o copilot fazer os ajustes de código&lt;/a&gt; e agora temos novas capas no ar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Medalha de &lt;em&gt;supercontributor&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Finalmente esta semana atualizei meu perfil Holopin para mostrar minha badge de “supercontribuidora” do Hacktoberfest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp8kivukugzv9blkk9n5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp8kivukugzv9blkk9n5.png" alt="Uma imagem das badges Holopin de @jesstemporal, que é um link para visualizar o perfil completo Holopin dela" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E a camiseta já chegou também!&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%2Fres.cloudinary.com%2Fjesstemporal%2Fimage%2Fupload%2Fv1760926902%2Fimages%2Fhacktoberfest-2025-w3%2FIMG_5971_wqmhfe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fjesstemporal%2Fimage%2Fupload%2Fv1760926902%2Fimages%2Fhacktoberfest-2025-w3%2FIMG_5971_wqmhfe.jpg" alt="Camiseta de supercontribuidora Hacktoberfest 2025 em cor clara, representando a recompensa de edição limitada para os principais contribuidores" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prefiro camisetas com cores escuras, mas tem um toque especial, já que apenas 10.000 serão distribuídas e essa em particular foi conquistada a base do GitFichas. 😊&lt;/p&gt;




&lt;p&gt;Por hoje é só! Te vejo no próximo relatório semanal do Hacktoberfest 2025. 👻&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>git</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The writer and the bot</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Sun, 19 Oct 2025 12:58:45 +0000</pubDate>
      <link>https://forem.com/jesstemporal/the-writer-and-the-bot-4ebm</link>
      <guid>https://forem.com/jesstemporal/the-writer-and-the-bot-4ebm</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest"&gt;2025 Hacktoberfest Writing Challenge&lt;/a&gt;: Contribution Chronicles&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Once upon a Friday morning, coffee in hand, the writer peered into the blog and found a tiny bug hiding between the posts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3q2o1to59je4aircrij5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3q2o1to59je4aircrij5.png" alt="The writer and the robot looking at the little bug" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Between mixing posts and capturing PRs, a bug had been created without the writer realizing it.&lt;/p&gt;

&lt;p&gt;But this is not the tale of that bug, this tale is about a change made after the bug was dealt with when the writer and her faithful helper bot started their quest…&lt;/p&gt;

&lt;h2&gt;
  
  
  Something woke up the &lt;em&gt;ick&lt;/em&gt; monster
&lt;/h2&gt;

&lt;p&gt;For the last eight or so posts, the writer had forgotten to set a variable that routes articles to their language-specific pages.&lt;/p&gt;

&lt;p&gt;This bug wasn’t huge, but it still annoyed the writer just the same: new posts appeared on the main mixed-language feed, but not on the English or Portuguese pages.&lt;/p&gt;

&lt;p&gt;Noticing the issue the writer quickly cast away this tiny bug with the GitHub Mobile app and &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/349" rel="noopener noreferrer"&gt;an equally tiny PR&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While reviewing the preview for the pull request, something else felt off. The cover images had started to feel a bit &lt;em&gt;too generic&lt;/em&gt; for what the writer have been publishing recently around Preptember and Hacktoberfest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9mvpfgcpild73u3cr7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9mvpfgcpild73u3cr7v.png" alt="A small, cute monster representing the baby ick - a tiny feeling of design dissatisfaction" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All posts said “miscellaneous” and the result was that the writer found a baby &lt;em&gt;ick&lt;/em&gt; for the covers she used and loved for such a long time.&lt;/p&gt;

&lt;p&gt;The ick is a terrible monster that makes every writer (and developer) want to change their website. If left alone, the ick always grows into a terrible monster that only gets defeated by a complete &lt;em&gt;website overhaul&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhkox0vc1ankwsax4r8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhkox0vc1ankwsax4r8m.png" alt="A large, intimidating monster representing the fully grown ick that demands complete website overhauls" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As the coffee started to wake the writer’s brain, an idea popped into her head:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;it is time to brew a new cover image!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The writer normally cycles between a few covers, with the color scheme from the use on the blog and a cover saying “open source” felt descriptive and better aligned with the last few posts written.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Or so the writer thought…&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting GitHub Copilot in motion
&lt;/h2&gt;

&lt;p&gt;After creating, exporting the new cover, and uploading it to the CDN, the writer had all the ingredients to brew a new spell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvv6ch11wguvmdf4k7uon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvv6ch11wguvmdf4k7uon.png" alt="The writer preparing magical ingredients and spell components to defeat the ick monster" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The writer &lt;a href="https://github.com/jtemporal/jtemporal.github.io/issues/350" rel="noopener noreferrer"&gt;opened an issue with the ingredients and the instructions to defeat &lt;em&gt;the ick&lt;/em&gt;&lt;/a&gt;: Change cover image on open source related posts to the new cover image. And gave everything to the trusty robot by assigning it to GitHub Copilot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6z15cudtfs2oc26ii7kq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6z15cudtfs2oc26ii7kq.jpg" alt="GitHub Copilot's initial pull request description showing it will work on the issue and update the PR with progress" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you assign an issue to your trusty robot, it will start to work right away &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/351" rel="noopener noreferrer"&gt;creating a draft PR&lt;/a&gt;, saying that it is going to work on the issue and that it will update the PR while it progresses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrar5bcks4s7o6vs0hyn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrar5bcks4s7o6vs0hyn.png" alt="The writer using her phone to quickly fix the tiny bug with GitHub Mobile" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few minutes later, Copilot updated the PR with a checklist of the steps it would take to make the proposed changes. It read like a neat spell scroll, with steps listed line by line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffmlp3j61iexb5kbjkrnm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffmlp3j61iexb5kbjkrnm.jpg" alt="GitHub Copilot's updated pull request description with a detailed checklist of steps to implement the changes" width="589" height="1014"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The writer was actually surprised by finding out that 27 posts about open source existed. So much so that the writer thought the bot made a mistake and gathered wrong posts to update the cover.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv6xn4qdkiwtliyz9rok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv6xn4qdkiwtliyz9rok.png" alt="The helpful robot discovering and gathering old blog posts from the archive" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Little did the writer know that the bot found posts from a long time ago…&lt;/p&gt;

&lt;h2&gt;
  
  
  Work done but minds changed
&lt;/h2&gt;

&lt;p&gt;With the work actually done the little robot updated the pull request, &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/351" rel="noopener noreferrer"&gt;put together an overview of the changes&lt;/a&gt;, and called the writer in for a review of the spell before it could be cast to production.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mh9mg1ijc5mz9ync5mx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mh9mg1ijc5mz9ync5mx.jpg" alt="GitHub Copilot's comprehensive report showing all 27 posts that were updated with the new cover image, organized by category" width="800" height="756"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s how the writer confirmed that actually 27 posts were about open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8 about Preptember&lt;/li&gt;
&lt;li&gt;4 about GitFichas&lt;/li&gt;
&lt;li&gt;2 about pull requests&lt;/li&gt;
&lt;li&gt;And incredible 13 about Hacktoberfest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The writer could feel the spell working and got really excited to see the preview of the posts with the new cover!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fol3hb0eue9jkyg1n12my.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fol3hb0eue9jkyg1n12my.png" alt="The writer showing excitement and anticipation while waiting to see the updated blog covers" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But the excitement didn’t last long…&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;em&gt;ick&lt;/em&gt; attacks again
&lt;/h2&gt;

&lt;p&gt;When the page loaded the writer’s happiness went a little bit like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;YAY NEW COVER… wait…&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;awww every single post open source now 😮‍💨&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;at least the new cover looks great ¯\_(ツ)_/¯&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjryzco7xzqq43pv8cds.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjryzco7xzqq43pv8cds.jpg" alt="Blog homepage showing multiple posts all using the same 'open source' cover image, creating visual monotony" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The writer quickly realized that this baby &lt;em&gt;ick&lt;/em&gt; was strong and ready to fight.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0cdntmmatct8rq0z35z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0cdntmmatct8rq0z35z.png" alt="The baby ick monster now grown stronger and ready to battle, showing determination" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fearing the ick would get out of control pretty soon, the writer created two new covers to add to the spell: one for Hacktoberfest and one for Preptember posts.&lt;/p&gt;

&lt;p&gt;Without delay the two new covers were added and with a comment the writer put the robot to work once again and waited.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27a4p54e03omb9ox72un.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27a4p54e03omb9ox72un.jpg" alt="Comment on the GitHub pull request tagging Copilot with instructions about the new cover images for Hacktoberfest and Preptember posts" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Watching the work closely
&lt;/h2&gt;

&lt;p&gt;To avoid anymore problems this time around, the writer also looked at the work while it was happening by casting the &lt;strong&gt;View session&lt;/strong&gt; spell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1whoslzk98r9bpqqg7q7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1whoslzk98r9bpqqg7q7.jpg" alt="GitHub Copilot session view showing the real-time progress as it processes the cover image adjustments task" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Viewing a session gives you a window to the little robot’s thinking. It let’s you observe all the steps the trusty robot is making while they are happening.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqfaym4obx5d7yj0vezf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqfaym4obx5d7yj0vezf.png" alt="The writer carefully monitoring and checking on Copilot's progress as it works on the task" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The happy ending
&lt;/h2&gt;

&lt;p&gt;A few minutes later, Copilot finished implementing the changes and writer could look at preview again.&lt;/p&gt;

&lt;p&gt;This time around the ick looked far away like it was weak. The variety helped keep the ick away. 😅&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfuauni7rq7bpcbe3q42.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfuauni7rq7bpcbe3q42.jpg" alt="Blog homepage now showing diverse cover images - Hacktoberfest posts with orange covers, Preptember posts with their own design, and other open source content with the new cover" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sipping coffee, fixing bugs, and watching Copilot work gave the writer hope for an ick-less future. What started as a simple fix turned into a cover image overhaul.&lt;/p&gt;

&lt;p&gt;By the time of the second cup of coffee, the pull request was merged and the spell had taken root. The Hacktoberfest posts now have their own cover, the Preptember ones have theirs, and the rest of the open source content has a fresh new look.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndcgpekru15ctem66pn0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndcgpekru15ctem66pn0.png" alt="The writer celebrating happily with the robot after successfully defeating the ick monster" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;ick&lt;/em&gt; is gone, replaced by covers that actually represent what the recent posts are about.&lt;/p&gt;

&lt;p&gt;Sometimes the smallest changes make the biggest difference. Sometimes, all it takes is a cup of coffee, a robot assistant, and a little bit of magic.&lt;/p&gt;

&lt;p&gt;And so, with a little bit of coffee and a helpful robot, the writer lived happily ever after, at least for now…&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The end&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Tiny side note: I find it extremely amusing when Copilot reacts with 👀 to the comments tagging it.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>ai</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>A escritora e o robô</title>
      <dc:creator>Jessica Temporal</dc:creator>
      <pubDate>Sun, 19 Oct 2025 04:00:00 +0000</pubDate>
      <link>https://forem.com/jesstemporal/a-escritora-e-o-robo-7b5</link>
      <guid>https://forem.com/jesstemporal/a-escritora-e-o-robo-7b5</guid>
      <description>&lt;p&gt;Era uma vez numa manhã de sexta-feira que com café na mão a escritora olhou para o seu blog e encontrou um pequeno bug escondido entre os posts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3q2o1to59je4aircrij5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3q2o1to59je4aircrij5.png" alt="A escritora e o robô olhando o pequeno bug" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Entre misturar posts e capturar PRs, um bug havia sido criado sem a escritora perceber.&lt;/p&gt;

&lt;p&gt;Mas este não é o conto daquele bug, este conto é sobre uma mudança feita depois que o bug foi resolvido quando a escritora e seu fiel ajudante robô começaram sua missão…&lt;/p&gt;

&lt;h2&gt;
  
  
  Algo acordou o monstro do &lt;em&gt;rancinho&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Nos últimos oito posts, a escritora havia esquecido de definir uma variável que direciona os artigos para suas páginas específicas de idioma.&lt;/p&gt;

&lt;p&gt;Esse bug não era grande, mas mesmo assim incomodou a escritora: novos posts apareciam no feed principal que é bilíngue, mas não nas páginas espeçifícas de inglês ou de português.&lt;/p&gt;

&lt;p&gt;Percebendo o problema, a escritora rapidamente se desfez desse pequeno bug com o GitHub Mobile e &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/349" rel="noopener noreferrer"&gt;um PR igualmente pequeno&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Enquanto revisava a prévia do pull request, algo mais pareceu estranho. As imagens de capa tinham começado a parecer &lt;em&gt;genéricas demais&lt;/em&gt; para o que a escritora vinha publicando recentemente sobre Preptember e Hacktoberfest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9mvpfgcpild73u3cr7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9mvpfgcpild73u3cr7v.png" alt="Um pequeno monstro fofo representando o bebê rancinho - uma pequena sensação de insatisfação com o design" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Todos os posts diziam “variados” (&lt;em&gt;miscellaneous&lt;/em&gt;) e o resultado foi que a escritora encontrou um bebê &lt;em&gt;rancinho&lt;/em&gt; pelas capas que amou por tanto tempo.&lt;/p&gt;

&lt;p&gt;O rancinho é um monstro terrível que faz toda escritora (e desenvolvedora) querer mudar seu site. Se deixado sozinho, o rancinho sempre cresce e se torna um monstro terrível que só é derrotado por uma &lt;em&gt;refatoração completa do site&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhkox0vc1ankwsax4r8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhkox0vc1ankwsax4r8m.png" alt="Um monstro grande e intimidador representando o rancinho totalmente crescido que exige refatorações completas do site" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enquanto o café começava a despertar o cérebro da escritora, uma ideia surgiu:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;é hora de preparar uma nova imagem de capa!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A escritora normalmente alterna entre algumas capas e uma capa dizendo “open source” parecia descritiva e mais alinhada com os últimos posts escritos.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ou pelo menos, assim pensava a escritora…&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Colocando o GitHub Copilot em ação
&lt;/h2&gt;

&lt;p&gt;Depois de criar, exportar a nova capa e fazer upload para o CDN, a escritora tinha todos os ingredientes para preparar um novo feitiço.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvv6ch11wguvmdf4k7uon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvv6ch11wguvmdf4k7uon.png" alt="A escritora preparando ingredientes mágicos e componentes do feitiço para derrotar o monstro rancinho" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A escritora &lt;a href="https://github.com/jtemporal/jtemporal.github.io/issues/350" rel="noopener noreferrer"&gt;abriu uma issue com os ingredientes e as instruções para derrotar &lt;em&gt;o rancinho&lt;/em&gt;&lt;/a&gt;: Mudar a imagem de capa nos posts relacionados a open source para a nova imagem de capa. E deu tudo para o robô confiável atribuindo ao GitHub Copilot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6z15cudtfs2oc26ii7kq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6z15cudtfs2oc26ii7kq.jpg" alt="Descrição inicial do pull request do GitHub Copilot mostrando que vai trabalhar na issue e atualizar o PR com o progresso" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando você atribui uma issue ao seu robô, ele vai começar a trabalhar imediatamente &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/351" rel="noopener noreferrer"&gt;criando um PR em rascunho&lt;/a&gt;, dizendo que vai trabalhar na issue e que vai atualizar o PR conforme progridir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrar5bcks4s7o6vs0hyn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrar5bcks4s7o6vs0hyn.png" alt="A escritora no telefone corrigindo o pequeno bug" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alguns minutos depois, o Copilot atualizou o PR com uma lista de verificação dos passos que tomaria para fazer as mudanças propostas. Parecia um pergaminho dos antigos organizado, com os passos listados linha por linha.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffmlp3j61iexb5kbjkrnm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffmlp3j61iexb5kbjkrnm.jpg" alt="Descrição atualizada do pull request do GitHub Copilot com uma lista detalhada de verificação dos passos para implementar as mudanças" width="589" height="1014"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A escritora ficou realmente surpresa ao descobrir que 27 posts sobre open source existiam. Tanto que a escritora pensou que o robô cometeu um erro e coletou os posts errados para atualizar a capa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv6xn4qdkiwtliyz9rok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv6xn4qdkiwtliyz9rok.png" alt="O robô prestativo descobrindo e coletando posts antigos do blog do arquivo" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mal sabia a escritora, que o robô encontrou posts de muito tempo atrás…&lt;/p&gt;

&lt;h2&gt;
  
  
  Trabalho feito mas mentes mudaram
&lt;/h2&gt;

&lt;p&gt;Com o trabalho realmente feito, o pequeno robô atualizou o pull request, &lt;a href="https://github.com/jtemporal/jtemporal.github.io/pull/351" rel="noopener noreferrer"&gt;escreveu um relatório das mudanças&lt;/a&gt;, e chamou a escritora para uma revisão do feitiço antes que ele pudesse ser lançado para produção.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mh9mg1ijc5mz9ync5mx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mh9mg1ijc5mz9ync5mx.jpg" alt="Relatório abrangente do GitHub Copilot mostrando todos os 27 posts que foram atualizados com a nova imagem de capa, organizados por categoria" width="800" height="756"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Foi assim que a escritora confirmou que realmente 27 posts eram sobre open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8 sobre Preptember&lt;/li&gt;
&lt;li&gt;4 sobre GitFichas&lt;/li&gt;
&lt;li&gt;2 sobre pull requests&lt;/li&gt;
&lt;li&gt;E incríveis 13 sobre Hacktoberfest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A escritora podia sentir o feitiço funcionando e ficou muito animada para ver a prévia dos posts com a nova capa!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fol3hb0eue9jkyg1n12my.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fol3hb0eue9jkyg1n12my.png" alt="A escritora mostrando animação e expectativa enquanto espera para ver as capas atualizadas do blog" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas a animação não durou muito…&lt;/p&gt;

&lt;h2&gt;
  
  
  O &lt;em&gt;rancinho&lt;/em&gt; ataca novamente
&lt;/h2&gt;

&lt;p&gt;Quando a página carregou, a felicidade da escritora durou pouco e foi mais ou menos assim:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;AEEE CAPA NOVA… espera…&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;afff todo post agora é open source 😮‍💨&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;pelo menos a nova capa tá massa ¯_(ツ)_/¯&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjryzco7xzqq43pv8cds.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjryzco7xzqq43pv8cds.jpg" alt="Página inicial do blog mostrando vários posts todos usando a mesma imagem de capa 'open source', criando monotonia visual" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A escritora rapidamente percebeu que esse bebê &lt;em&gt;rancinho&lt;/em&gt; era forte e estava pronto para lutar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0cdntmmatct8rq0z35z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0cdntmmatct8rq0z35z.png" alt="O bebê monstro rancinho agora mais forte e pronto para a batalha, mostrando determinação" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Temendo que o rancinho saísse de controle muito em breve, a escritora criou duas novas capas para adicionar ao feitiço: uma para Hacktoberfest e uma para posts de Preptember.&lt;/p&gt;

&lt;p&gt;Sem demora, as duas novas capas foram adicionadas e com um comentário a escritora colocou o robô para trabalhar mais uma vez.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27a4p54e03omb9ox72un.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27a4p54e03omb9ox72un.jpg" alt="Comentário no pull request do GitHub marcando o Copilot com instruções sobre as novas imagens de capa para posts do Hacktoberfest e Preptember" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Observando o trabalho de perto
&lt;/h2&gt;

&lt;p&gt;Para evitar mais problemas desta vez, a escritora também olhou o trabalho enquanto estava acontecendo lançando o feitiço &lt;strong&gt;View session&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1whoslzk98r9bpqqg7q7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1whoslzk98r9bpqqg7q7.jpg" alt="Visualização da sessão do GitHub Copilot mostrando o progresso em tempo real enquanto processa a tarefa de ajustes das imagens de capa" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visualizar uma sessão te dá uma janela para o pensamento do pequeno robô e te permite observar todos os passos que o robôzinho está fazendo enquanto eles estão acontecendo.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  O final feliz
&lt;/h2&gt;

&lt;p&gt;Alguns minutos depois, o Copilot terminou de implementar as mudanças e a escritora pôde olhar a prévia novamente.&lt;/p&gt;

&lt;p&gt;Desta vez o rancinho parecia distante e fraco. A variedade ajuda a manter o rancinho longe. 😅&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfuauni7rq7bpcbe3q42.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfuauni7rq7bpcbe3q42.jpg" alt="Página inicial do blog agora mostrando imagens de capa diversas - posts do Hacktoberfest com capas laranja, posts do Preptember com seu próprio design, e outros conteúdos de open source com a nova capa" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tomando café, corrigindo bugs, e vendo o Copilot trabalhar deu à escritora esperança para um futuro sem rancinho.&lt;/p&gt;

&lt;p&gt;Quando a xícara de café estava vazia, o pull request havia sido mergeado e o feitiço tinha criado raízes: Os posts do Hacktoberfest agora têm sua própria capa, os de Preptember têm a deles, e o resto do conteúdo de open source tem uma nova cara.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndcgpekru15ctem66pn0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndcgpekru15ctem66pn0.png" alt="A escritora comemorando feliz com o robô após derrotar com sucesso o monstro rancinho" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O &lt;em&gt;rancinho&lt;/em&gt; se foi, substituído por capas que realmente representam sobre o que os posts recentes falam.&lt;/p&gt;

&lt;p&gt;Às vezes as menores mudanças fazem a maior diferença. Às vezes, tudo que é preciso é uma xícara de café, um assistente robô, e um pouco de magia.&lt;/p&gt;

&lt;p&gt;E assim, com uma xícara de café e um robô prestativo, a escritora viveu feliz para sempre. Bem pelo menos por enquanto…&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fim&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Pequena observação: Acho extremamente divertido quando o Copilot reage com 👀 aos comentários que marcam ele.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>git</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
