Skip to content

20 Papi-generated tutorials: tested and passing#82

Open
mwunderl wants to merge 17 commits into
mainfrom
testing/papi-generated
Open

20 Papi-generated tutorials: tested and passing#82
mwunderl wants to merge 17 commits into
mainfrom
testing/papi-generated

Conversation

@mwunderl
Copy link
Copy Markdown
Contributor

@mwunderl mwunderl commented May 13, 2026

Summary

16 getting-started tutorials for AWS services, each with Python SDK script, CLI bash script, and tutorial markdown.

Services

Scheduler, Recycle Bin, CodeArtifact, CodeCommit, Transcribe, Route 53, GuardDuty, Firehose, CodePipeline, Pinpoint, Service Catalog, Image Builder, Organizations, CodeBuild, Inspector2, Macie2

Contents per service

  • Python SDK script (tested, passing)
  • CLI bash script (tested, passing, with error handling and cleanup)
  • Tutorial markdown document
  • README.md

Prerequisites

Scripts that need IAM roles read from TUTORIAL_ROLE_ARN environment variable. Deploy the shared roles stack:

aws cloudformation deploy --template-file tuts/000-prereqs-roles/cfn-prereqs-roles.yaml --stack-name tutorial-prereqs-roles --capabilities CAPABILITY_NAMED_IAM
export TUTORIAL_ROLE_ARN=$(aws cloudformation describe-stacks --stack-name tutorial-prereqs-roles --query 'Stacks[0].Outputs[?OutputKey==`SchedulerRoleArn`].OutputValue' --output text)

Testing

All scripts tested in automated container environment with 5-attempt self-repair.

mwunderl added 17 commits May 13, 2026 07:36
Generated by Doc Papi pipeline:
1. Papi analyzed service APIs and produced specs
2. Bedrock Nova Pro generated Python scripts
3. Agent container tested each (1-5 attempts until pass)
4. Output validated (real AWS calls confirmed)

Services:
- EventBridge Scheduler (schedule + group)
- Recycle Bin (retention rules)
- CodeArtifact (domain + repository)
- CodeCommit (repo + files + branches)
- Amazon Transcribe (custom vocabulary)
- Route 53 (hosted zone + records)
- Amazon SES v2 (contact lists)
- Amazon GuardDuty (detector + findings)
- IAM Access Analyzer (analyzer + findings)
- Kinesis Data Firehose (delivery stream + records)
- AWS CodePipeline (S3 source + deploy)
- CloudWatch Synthetics (canary monitors)
…% pass

All 8 previously-failing services now pass with enhanced prompting:
- Pinpoint (1 attempt)
- Service Catalog (1 attempt)
- Image Builder (3 attempts)
- Organizations (3 attempts)
- CodeBuild (1 attempt)
- Forecast (2 attempts)
- Inspector2 (1 attempt)
- Macie2 (4 attempts)

Key: providing a working example + full input specs eliminates all
parameter validation errors. The model copies the pattern exactly.

Total tutorials on this branch: 20 (12 + 8)
…deCommit)

These are the bash equivalents of the Python tutorials, tested and passing
in the agent container. CLI scripts follow tutorial-gen rules:
- set -euo pipefail
- Resource tracking + reverse cleanup
- Error handling with check_error()
- No --region, no jq
- Unique naming with random suffix

CLI pass rate: 40% (4/10) vs Python 93% (27/29)
Main CLI failure cause: tag syntax varies by service, model guesses wrong flags
…(62% pass rate)

Minimal CLI approach (from Python reference, no tags, simple error handling)
achieves 62% pass rate vs 30% with full template.

Total CLI scripts on this branch: 9 (route53, guardduty, amplify, codecommit,
rbin, sesv2, pinpoint, transcribe, scheduler)
…, transcribe)

With CLI help in prompt: codeartifact and accessanalyzer pass on FIRST attempt.
Manual fixes for firehose (bash syntax), sesv2 (param names), transcribe (phrases vs S3).

Total CLI scripts: 14 passing across all services in PR #82.
CLI pass rate with help + Python reference: 100% (8/8 targeted services pass)
…e, guardduty, imagebuilder, inspector2, macie2, organizations, route53, servicecatalog, accessanalyzer, transcribe)
Refined scripts now have:
- set -e with proper error handling
- TEMP_DIR + LOG_FILE
- declare -a CREATED_RESOURCES=() with tracking
- cleanup_resources() function (reverse order, || true)
- trap cleanup_resources EXIT
- Step headers with === separators
- Unique resource names with random suffix

12/16 scripts pass testing. Remaining 4 need manual fixes:
- codeartifact (timing issue between domain/repo creation)
- organizations (empty output - needs investigation)
- codebuild (CLI syntax in buildspec)
- inspector2 (bash conditional syntax)
All 16 scripts now have educational output:
- Title banner with service description
- Before each command: what it does and why
- After each command: result with context
- Tutorial complete summary
- Logs to file when run interactively (tee with terminal detection)

15/16 pass testing. Output text is reusable as tutorial guidance paragraphs.
Generated from instructive CLI scripts. Each tutorial has:
- H1 title + H2 sections (Prerequisites, steps, Clean up, Next steps)
- Guidance paragraphs before/after each code block (from script echo text)
- Obfuscated example output
- Sentence case, present tense, $ prefix on commands
…al={id})

Tagging strategies applied per service:
- inline_kv: scheduler, guardduty, firehose (--tags Key=X,Value=Y)
- inline_kv_lower: codeartifact (--tags key=x,value=y)
- post_create: codecommit, codebuild, codepipeline, imagebuilder, inspector2,
  macie2, organizations, pinpoint, route53, servicecatalog, transcribe, rbin
  (separate tag-resource call after creation)

All 16 pass testing with tags applied.
Moved to holding/new-tuts-20260518:
- ses-v2 (no CLI, no tutorial)
- access-analyzer (no CLI, no tutorial)
- synthetics (no CLI, no tutorial)
- forecast (no CLI, no tutorial)

Remaining 16 renumbered sequentially from 088 (first available after main's 087):
088-scheduler, 089-rbin, 090-codeartifact, 091-codecommit,
092-transcribe, 093-route53, 094-guardduty, 095-firehose,
096-codepipeline, 097-pinpoint, 098-servicecatalog, 099-imagebuilder,
100-organizations, 101-codebuild, 102-inspector2, 103-macie2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant