Building a Code-Along Tutorial with AI (Part 1)
It occurred to me during a walk one day to try using gen AI to generate a tutorial to walk me through building a tool I wanted, instead of prompting it until it generated a version of the desired tool. I’m not sure if prompting gen AI to generate tutorials is a meaningful corrective against the deskilling trend a growing body of literature is warning about. But as a former senior manager of software engineering in transition, I haven’t shipped production software since the pandemic and thought this might be a way to start knocking some rust off. I decided to prompt a tutorial to build a couple things:
1. A data pipeline for retrieving my Bluesky posts on a schedule and storing them in a database
2. A CLI for querying the database
It took a few iterations with Claude Sonnet 5 set to Medium effort, but the end results were a decent tutorial and working code.
Version 1
The prompt:
As a software engineering instructor, generate a hands-on tutorial for me to follow in order to build the following software components:
- A data pipeline which retrieves my Bluesky posts via the AT Protocol API on a schedule and stores them in a database (perhaps SQLite to start).
- A CLI for querying the database
The result: bluesky-pipeline-tutorial.md
When I got to the part of project setup that said to create a .env file and add it to .gitignore, that exposed the absence of any prior instructions to configure a local GitHub repo. So I prompted for a tutorial revision.
Version 2
The prompt:
Revise the tutorial to include the necessary steps to configure a local GitHub repo. The absence of those prior steps stands out when project setup instructions say this:
Create .env (and add it to .gitignore immediately)
The result: bluesky-pipeline-tutorial-v2.md
I followed the revised tutorial all the way through step 5, but manual execution of the pipeline failed. It occurred to me that error I’d gotten might be because I didn’t properly account for having switched from the default PDS for Bluesky to Blacksky some time ago. But I narrowed my follow-up prompt to the specific error instead of something broader.
Version 3
The prompt:
Result was the following: [2026-07-12T21:46:07.397Z] Pipeline failed: Invalid identifier or password
Please generate a revised tutorial that addresses the issues.
The result: bluesky-pipeline-tutorial-v3.md
The revised tutorial added a subsection to verify authentication before completing the rest of the pipeline, including a test script followed by multiple steps to check if the failure repeated. I walked through the steps, now certain my attempt to connect to the wrong PDS was the culprit.
Version 4
The prompt:
I've verified the issue is not any of the items in the new step 3a, but I forgot that I no longer use the default Bluesky PDS, having switched to Blacksky PDS some time ago. Generate a revised tutorial which accounts for this possibility, so I can update the code accordingly.
The result: bluesky-pipeline-tutorial-v4.md
This version of the tutorial added an environment variable to make the PDS a configurable value. It also provided a script to resolve the correct PDS given a handle and the BlueSky public AppView. Writing and executing the script yielded https://blacksky.app as the correct PDS. Once I updated the .env file, the test-auth.ts script that failed after I followed the steps of version 3 succeeded. Finally, the first manual pipeline run also succeeded, retriving and storing 3295 Bluesky posts in a SQLite database.
I haven’t built the CLI yet, since I’ve been using Datasette to explore my downloaded Bluesky posts. I will write another post about the experience of building the CLI.