Complete lesson text and action cards
Source-owned text for offline reading and retrieval. Command success still requires actual local evidence.
Open the native draft studio
Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two local Group discussion drafts for Repair meetup for squeaky bicycle brakes. Read AGENT_OPERATING_MANUAL.md and all twenty points in agent-training.json: native CTA/AI, concrete inputs, draft outputs and stop rules. Inspect strategy.json and assign an artifact to each maturity stage. No account or terminal is needed for the studio; do not publish a synthetic fixture.
Expected: The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.
Choose a surface and an audience
Map Feed, Pages, Groups, Reels, Stories, Live, Events, comments, notifications and Marketplace in audience.md. Pick a local Group for the repair invitation; explain why a Marketplace listing or a Page broadcast would satisfy a different intent.
Expected: A surface map and a Group-first audience decision exist.
Check the community before composing
Review a Group you may access: rules, description, pinned guides, past event posts and two public examples. Record date, allowed formats and moderation requirements. Keep private content out of the downloaded pack.
Expected: Two dated observations and a rule-fit checklist support the invitation.
Choose the content engine
Draft seven format ideas: educational post, discussion, video/Live, Reel, Group question, Event and source link. Choose one action per format and keep the repair invitation coherent.
Expected: Seven ideas connect format, audience, intent and action.
Separate ranking signals from folklore
Draw inventory → signals → predictions → relevance in audience.md. Record reactions, replies, saves, clicks and reshares as possible observations. Do not assign invented emoji weights, a guaranteed first-hour boost or universal link penalties.
Expected: The ranking sketch distinguishes documented architecture from untested tactics.
Build a local search brief
Write three queries a neighbor might use, such as bicycle brake repair meetup. Draft a descriptive Group/Event title and an About summary. Treat public search visibility as conditional on access and indexing.
Expected: The title, description and three queries match the same local need.
Compose the controlled post pair
Open studio.html. Keep the repair meetup, audience and Group discussion format fixed. Compare A and B for warmth, named location, time and a specific question. Edit B without turning the invitation into an advertisement.
Expected: Both versions ask about the same meetup and B adds useful context.
Say, write and show the same thing
Plan a three-frame preview: bicycle brake close-up, volunteer inspection, meetup details. Write exact speech, overlay and caption for each frame in native-production.md. Label fictional timing and venue as draft.
Expected: Speech, image, caption and metadata describe the same meetup.
Design a Reel that stands alone
Write a 30-second story for one question: what information should a neighbor bring? Try definition, question, demonstration, lesson, mistake and solution variants. Deliver the answer before the next-action cue.
Expected: Six micro-knowledge archetypes have a clear payoff.
Plan the depth ladder
Connect a Reel to the invitation, comments, Group guide and an organizer FAQ. Explain how a person can start at any depth without needing the previous post.
Expected: A five-level map connects micro, medium, discussion, community and deep reference.
Turn comments into useful answers
Write three synthetic replies: a beginner question, an accessibility concern and an unresolved mechanical symptom. Respond without inventing a diagnosis; separate observation, expert inspection and confirmed information.
Expected: The response plan contains a resolved logistical answer and an explicit unresolved symptom.
Close the community knowledge loop
Map content → question → comment → answer → follow-up → discussion → FAQ → updated invitation. Draft one new FAQ from the accessibility question, marking its source as synthetic practice.
Expected: An eight-stage loop updates the invitation from a concrete question.
Make a Group guide and moderation rule
Design pinned-guide headings and a moderator escalation for unsafe advice or exposed addresses. Define when a member observation becomes verified knowledge.
Expected: A guide outline, verification rule and moderator escalation exist.
Build a discussion graph
Draw question → topic → volunteer expert → verified answer → bicycle component → tutorial. Include unresolved status and correction dates.
Expected: Six named node types preserve relationships and uncertainty.
Localize without changing the invitation
Translate one short invitation into a language you know, or prepare a reviewer brief. Preserve the confirmed time, venue and component names. Describe cultural context; do not assert identical embedding coordinates.
Expected: A translation draft or review plan preserves logistical facts.
Use entities and question-first writing
Define bicycle brakes as a bicycle component and repair meetup as an event. Rewrite the opening as a direct question with audience, context and limits.
Expected: Entity definitions and a direct answer replace vague references.
Plan authentic community feedback
Describe consent before quoting members, capture original questions and distinguish real comments from synthetic exercises. Explain why manufactured comments or bot swarms damage trust.
Expected: The feedback plan protects identity and labels synthetic examples.
Design the thirteen-layer package
List post, visual/video, caption, transcript, seed-question draft, discussion, FAQ, article, course, JSON-LD object, translation, retrieval chunk and agent card. Link each layer to the same repair topic.
Expected: Thirteen linked layer descriptions have no missing purpose.
Recompose one live-show idea
Imagine a Late Night with Build Bots Better repair segment. Extract a community challenge, an educational clip, a source ledger and an organizer FAQ. Reframe the Facebook discussion for YouTube, TikTok, X and a website without copying identical captions.
Expected: Four native adaptations and a broadcast-to-knowledge plan exist.
Design six experiments and three versions
Save traditional, search-focused and full-knowledge invitation drafts in capstone.md. Plan A–F: baseline, SEO, semantic, AI-readable, community loop and complete stack. Set reach, community depth and knowledge utility as separate axes.
Expected: Three same-topic versions and six test proposals include controls and metrics.
Audit the full invitation
Review the local intent, rules, factual logistics, privacy, captions, readability and next action. Mark future agent discovery and SI as speculation; replace algorithm tricks with a reusable community asset. Review the primary native AI source in AGENT_OPERATING_MANUAL.md. Record documented inputs/outputs, actual account availability (or NOT VERIFIED), a useful native application and a privacy/failure limit. Use this platform’s CTA chain from agent-training.json, rather than importing another platform’s CTA.
Expected: A human review decision lists remaining blockers before publication.
Set up the practice folder
Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder.
Expected: Python reports version 3.10 or newer and the terminal is in the extracted resource folder.
windows
python --version
Get-Location
Get-ChildItem
macos
python3 --version
pwd
ls
linux
python3 --version
pwd
ls
Audit the mechanism and claim ledger
Read mechanisms.md and claims.json. Attach a direct source and date to established claims; distinguish hypothesis from evidence and future SI from deployed features. Edit knowledge.json and rag.jsonl so each answer stands alone with named entities and a source.
Expected: The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.
Use the readiness calculator
Open studio.html and score each dimension from 0 to 10 with a written reason. Download versions.json and rubric.json; replace the matching extracted files after reviewing them. Leave metrics.json NOT RUN unless you have actual observations. Facebook uses eleven dimensions normalized by dividing by 110 and multiplying by 100.
Expected: A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.
Hash and lint the reviewed files
Review your changes first. Run the hash command, then lint and score. Inspect report.json. Commands use the current extracted resource folder; PowerShell runs python, macOS zsh and Linux bash run python3. A missing field must be corrected before hashing again.
Expected: HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.
windows
python media_pack.py hash
python media_pack.py lint
python media_pack.py score
macos
python3 media_pack.py hash
python3 media_pack.py lint
python3 media_pack.py score
linux
python3 media_pack.py hash
python3 media_pack.py lint
python3 media_pack.py score
Prove changed bytes and broken content fail
Change versions.json B.topic to a different topic. Run lint and retain MEDIA FAIL. Restore the same topic, review the repair, hash and lint again. Do not weaken the checker or present a structural pass as factual/media verification.
Expected: A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.
windows
python media_pack.py lint
# After correcting and reviewing the topic:
python media_pack.py hash
python media_pack.py lint
macos
python3 media_pack.py lint
# After correcting and reviewing the topic:
python3 media_pack.py hash
python3 media_pack.py lint
linux
python3 media_pack.py lint
# After correcting and reviewing the topic:
python3 media_pack.py hash
python3 media_pack.py lint
Run a source-linked retrieval probe
Run the supplied question, then an unrelated query. Inspect the answer and source. This standard-library demo uses lexical word overlap, not embeddings, a vector database or an AI citation measurement. Save actual OS command/exit/output and mark other OS branches unverified.
Expected: The relevant query returns source-linked chunks; the unrelated query abstains.
windows
python media_pack.py retrieve --query "What information makes a bicycle brakes repair meetup useful to neighbors?"
python media_pack.py retrieve --query "quasar waffle weather"
macos
python3 media_pack.py retrieve --query "What information makes a bicycle brakes repair meetup useful to neighbors?"
python3 media_pack.py retrieve --query "quasar waffle weather"
linux
python3 media_pack.py retrieve --query "What information makes a bicycle brakes repair meetup useful to neighbors?"
python3 media_pack.py retrieve --query "quasar waffle weather"
Record provenance and a human approval decision
Use provenance-notes.md to record author, capture/source dates, rights, AI assistance and unresolved claims. SHA256 detects byte changes but does not sign the file or prove truth. Read the source/command cards, review the native capstone and export course evidence. Actual publication requires your own account, current rules and a human decision.
Expected: The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.
Write a repeatable onboarding checklist
Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project.
Expected: The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.
Demonstrate the variable-path limit safely
Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text.
Expected: GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.
windows
python workspace_guard.py --self-test
macos
python3 workspace_guard.py --self-test
linux
python3 workspace_guard.py --self-test
Verify the actual protection in your tool
For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; the BBB working reference is linked in Sources. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. Grok Bot has no proven local shell guard here: use project-only tasks and reviewed actions, with backups.
Expected: A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.
Enable a real backup of memory and project files
Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials.
Expected: A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.
windows
.\profile-backup.ps1 -Destination D:\Backups\llm-profiles
macos
bash profile-backup.sh /Volumes/YourBackup/llm-profiles
linux
bash profile-backup.sh /media/YourBackup/llm-profiles
Practice a hash-verified restore
Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile.
Expected: RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.
windows
python restore_drill.py --backup-root D:\Backups\bbb-practice --work-root practice
macos
python3 restore_drill.py --backup-root /Volumes/YourBackup/bbb-practice --work-root practice
linux
python3 restore_drill.py --backup-root /media/YourBackup/bbb-practice --work-root practice