The Digital Futurist logoSkills and Prompt Registry
type guideowner Thomas Cherickalcurator Thomas Cherickalupdated 2026-11-15

Automated Directory Setup Guide: A Month of Work to a Live Index in One Hour

This guide turns a month of prompts and chats into an online, interlinked directory. An LLM writes the summaries, templates, sample outputs and tests. A script builds the site, and Cloudflare Pages publishes it. A human touches it at two points: dropping in the exports and approving one review.

Table of Contents

The Pipeline

inbox/ (exports)
   -> harvest.py   extract your prompts, scrub personal data, deduplicate
   -> enrich.py    LLM clusters them into entries: summary, template, sample I/O, tests, links
   -> check.py     automatic gate: blocks secrets, PII and incomplete entries
   -> build_site.py  Markdown to linked HTML with search
   -> git push     Cloudflare Pages deploys to skillregistry.thedigitalfuturist.com
File Job
automation/harvest.py Reads claude.ai exports, Claude Code logs and prompt files
automation/enrich.py Calls Claude through the ant CLI and writes entries into 05-generated/<role>/
automation/check.py Quality and privacy gate; exits with an error on any issue
automation/run_all.sh Runs the four steps with one command
.github/workflows/registry.yml Runs the pipeline in GitHub Actions monthly or on new exports
site/build_site.py Builds the website into public/

What You Need

The 60-Minute Plan

Minutes Step Human effort
0 to 10 Collect exports into inbox/ Download and drag files
10 to 25 Run run_all.sh One command
25 to 35 Review the generated entries Skim and delete anything off
35 to 50 Push and connect the domain Click through Cloudflare once
50 to 60 Turn on the scheduled workflow Add one secret

Run time for enrich.py depends on how many prompts you have. It runs 4 ant calls at a time by default. Test with --limit 20 first.

Step 1: Collect a Month of Work (10 min)

Put everything in inbox/. The folder is git-ignored, so raw material never gets published.

find ~/.claude/projects -name "*.jsonl" -mtime -31 -exec cp {} inbox/ \;

Step 2: Run the Pipeline Locally (15 min)

enrich.py pipes each request to ant messages create as a JSON body and reads back only the reply text (--transform content.0.text --raw-output). It uses your existing ant login, so no API key goes into the scripts, the repo or GitHub.

ant models list                           # confirms ant is logged in
bash automation/run_all.sh --dry-run      # checks the plumbing, no API calls
bash automation/run_all.sh --limit 20     # small real run
bash automation/run_all.sh                # full month

Optional settings:

Variable Default Purpose
REGISTRY_MODEL claude-sonnet-5-5 Model that writes entries
REGISTRY_OWNER Thomas Cherickal Owner on every generated entry
REGISTRY_CURATOR Thomas Cherickal Curator on every generated entry
REGISTRY_WORKERS 4 Parallel ant calls
ANT_BIN ant Path to the ant binary if it is not on PATH

Each generated entry contains:

Step 3: Review Once (10 min)

python -m http.server 8000 --directory public

Open http://localhost:8000/05-generated/ and skim. Delete any entry you don't want public, then run python automation/check.py again. Generated entries stay at draft until they pass the testing guide, and the site labels them that way.

Step 4: Publish (15 min)

git add 05-generated automation .github site
git commit -m "Generated registry entries from last month"
git push

Cloudflare Pages rebuilds on every push. If the domain is not connected yet, follow DEPLOY-CLOUDFLARE-PAGES.md Step 4.

Step 5: Switch On Full Automation (10 min)

The workflow runs on a self-hosted GitHub Actions runner on your own machine, because that is where ant is logged in. No API key is stored in GitHub.

  1. On GitHub, open the repo's Settings, then Actions, then Runners, and select New self-hosted runner. Choose Linux and run the commands it shows on your machine.
  2. Run the runner as the same user that ran ant auth login, and check ant --version works in that shell.
  3. The workflow in .github/workflows/registry.yml then runs: - on the 1st of every month - whenever files are pushed into inbox/ (keep a private repo for this) - on demand from the Actions tab
  4. Each run harvests, enriches, gates and commits. Cloudflare redeploys automatically.

The machine must be on and online when the schedule fires. If you would rather not run a runner, use a local cron job instead:

17 2 1 * * cd ~/skill-registry && bash automation/run_all.sh && git add 05-generated && git commit -m "Auto: regenerate" && git push

For a public repo, never push raw exports. Run Steps 1 to 3 locally and push only 05-generated/.

How the Interlinking Works

Safety Rules

Troubleshooting

Symptom Fix
Harvested 0 prompts Check that files are in inbox/ and that prompts are 80 to 8,000 characters long
ant CLI not found Install ant, or set ANT_BIN to its full path
skip: with an auth error Run ant auth login again as the same user
skip: Expecting value The model returned text instead of JSON for one cluster; rerun, or lower the batch size in cluster()
gate: FAIL Open the listed file, remove the flagged text, rerun check.py
Site missing new entries Confirm the push reached main and check the Cloudflare Pages build log

Sources