Skip to content

ColabEdu CLI Reference

ColabEdu CLI Reference

The ce-svc-cli is the command-line interface for operating the ColabEdu pedagogical curation pipeline. Commands are organized into seven functional groups:

GroupPrefixDescription
CuratorcuratorAI curation, E2E tests, and batch generation
Document DiscoverydocsDocument discovery, download, and cataloging
TaxonomytaxonomyStandards, rubrics, and course exploration
Spec Batchspec batchDeclarative, staged pipeline
CurriculumcurriculumGap analysis, ACA plan creation, and progress tracking
User OperationsuserUser provisioning
CRM OperationscrmLead import from CSV

Environment Configuration

Ventana de terminal
# Required
export CURATOR_API_BASE_URL=http://localhost:8081 # Backend URL (ce-svc-ai-services)
export CE_SPECS_ROOT=/path/to/ce-specs # Specs repository root
# Optional (external source discovery)
export COLABEDU_API_KEY_CANVAS=<token> # Canvas Commons API
export COLABEDU_API_KEY_EUROPEANA=<wskey> # Europeana Education API
export GOOGLE_CSE_API_KEY=<key> # Google Custom Search API
export GOOGLE_CSE_ID=<cx> # Google CSE ID
# Optional (internal operations)
export COLABEDU_API_BASE_URL=http://localhost:8081
export COLABEDU_API_INTERNAL_KEY=<key> # X-Internal-API-Key

Pipeline Overview Diagram

┌──────────────────────────────────────────────────────────────────────┐
│ ColabEdu CLI — Pipeline Overview │
│ │
│ CLASSIC PIPELINE (Exam PDFs) │
│ ──────────────────────────── │
│ taxonomy check → docs discover → docs download → docs catalog │
│ → curator curate → curator validate → sync_specs.sh │
│ │
│ LMS PIPELINE (Canvas/Moodle) │
│ ──────────────────────────── │
│ docs discover --source canvas-commons │
│ → docs download → docs catalog --manifest lms_manifest.yaml │
│ → curator batch → curator test --lms --all │
│ │
│ OER PIPELINE (CK-12/Khan/Procomún/Europeana) │
│ ──────────────────────────────────────────── │
│ docs discover --source ck12|europeana │
│ → docs download → docs catalog │
│ → curator curate --source-type OER_RESOURCE │
│ --output-type RESOURCE_LEARNING │
│ │
│ DECLARATIVE BATCH PIPELINE │
│ ────────────────────────── │
│ spec batch generate → spec batch run → spec batch status │
│ SEED & BLOOM PIPELINE (Content Derivation) │
│ ────────────────────────────────────────── │
│ curator curate --source book.pdf --visibility private │
│ → curator bloom derive --seed <ref> --strategy PROGRESSION │
│ │
│ CURRICULUM PIPELINE (Gap-Driven ACA) │
│ ──────────────────────────────────── │
│ curriculum gaps --standard AP_SPANISH --country US │
│ → curriculum plan create --theme <gap> --sources "url1,url2" │
│ → curriculum progress (tracks all ACA plans per standard) │
│ │
└──────────────────────────────────────────────────────────────────────┘

Group curator — AI Curation Pipeline

curator curate

Launches the AI curation pipeline on a local file or GCS URI and downloads the generated YAMLs.

Ventana de terminal
curator curate --source <file-or-gs-uri> --referenceCode <code>
[--sections "A,B"] [--type C2_EXERCISES]
[--output <dir>] [--country <cc>]
[--standard <std>] [--level <level>] [--subject <slug>]
[--source-type WEB|LMS_PACKAGE]
[--output-type RECIPE|INTERACTIVE_LESSON|RESOURCE_LEARNING]
[--sandbox true|false] [--validate true|false]
[--user <email>]

Flags:

FlagTypeDefaultDescription
--sourceStringrequiredLocal path (PDF, DOCX, .imscc, .mbz) or GCS URI (gs://...)
--referenceCodeStringTaxonomic reference code (e.g. es.lomloe.bach.2.lcl). Auto-resolves standard, level, and subject.
--sectionsStringComma-separated section names: "Section I,Section II"
--typeStringC2_EXERCISESSpec type to generate
--outputString./curator_outOutput directory for YAMLs
--countryString(from referenceCode)Country code override
--standardStringCurriculum standard override (e.g. LOMLOE, IB). Ignored when --referenceCode is used.
--levelStringEducation level override (e.g. 4 ESO, 2 BACH). Ignored when --referenceCode is used.
--subjectStringSubject override (e.g. lcl, matematicas). Ignored when --referenceCode is used.
--source-typeString(auto)WEB or LMS_PACKAGE. Auto-detected: .imscc/.mbz/.zipLMS_PACKAGE.
--output-typeStringRECIPERECIPE | INTERACTIVE_LESSON | RESOURCE_LEARNING
--sandboxbooleantrueWrite YAMLs to disk without registering in DB
--validatebooleantrueStructurally validate downloaded YAMLs
--userStringEmail of the user who will own the job. Without this flag, the job is created as shared (shared=true) and visible to all pedagogues with CONTENT_CREATOR, TEACHER, or ADMIN role.
--visibilityStringPUBLICVisibility of the ingested spec: PUBLIC (available to all users) or PRIVATE (seed only — not served to students, used as derivation source for Bloom).

Internal flow:

curator curate
├─ 1. POST /api/v1/curator/curate → workflowId
│ (body: headless=true, sandboxMode, specType, referenceCode,
│ rawContentBase64 / storageUrl, lmsSourceType, outputType)
├─ 2. Poll GET /api/v1/curator/status/{workflowId}
│ every 3s, timeout: 300s
│ states: RUNNING → COMPLETED | FAILED | ERROR
├─ 3. Download proposedSpecs[] → {workflowId}_spec_{n}_{outputType}_{ts}.yaml
└─ 4. (optional) curator validate on each downloaded file

Examples:

Ventana de terminal
# With referenceCode (recommended)
curator curate \
--source ce-specs/sources/es/lomloe/2bach/lcl/exam_lcl_2023.pdf \
--referenceCode es.lomloe.bach.2.lcl
# With explicit flags
curator curate \
--source exam.pdf \
--standard LOMLOE --level "2 BACH" --subject lcl \
--sections "Option A,Option B" \
--type C2_EXERCISES

curator status

Checks the status of an ongoing or completed curation workflow.

Ventana de terminal
curator status --id <workflowId>
FlagDescription
--idRequired. Workflow ID returned by curator curate.

Endpoint: GET /api/v1/curator/status/{workflowId}

Example:

Ventana de terminal
curator status --id wf-20240601-abc123
# → Workflow ID : wf-20240601-abc123
# → Status : COMPLETED
# → Specs ready : 2

curator validate

Structurally validates a curator-generated YAML spec.

Ventana de terminal
curator validate --spec <path-to-yaml>
FlagDescription
--specRequired. Path to the YAML file to validate.

Checks that the YAML has metadata block (with type and id) and spec block (with exercises[].prompt if applicable).

Example:

Ventana de terminal
curator validate --spec curator_out/wf-abc123_spec_1_recipe_20240601.yaml
# → ✅ wf-abc123_spec_1_recipe_20240601.yaml — Valid YAML spec. All required fields present.

curator test

Runs E2E test cases from the test manifest and generates a Markdown report.

Ventana de terminal
curator test [--case <id>] [--all] [--manifest <path>] [--report true|false]
[--output <dir>] [--lms]
FlagDefaultDescription
--caseRun a single test case by ID
--allfalseRun all test cases in the manifest
--manifestce-specs/tests/curator_test_manifest.yamlPath to YAML manifest
--reporttrueGenerate Markdown report in output directory
--output./curator_outOutput directory (creates yyyy-MM-dd/ subdirectory)
--lmsfalseUse lms_curator_test_manifest.yaml instead of default

Examples:

Ventana de terminal
# Single case from classic manifest
curator test --case ap_spanish_2023_ordinaria
# All LMS/OER cases
curator test --lms --all
# Custom manifest
curator test --manifest my-tests/batch_test.yaml --all --output ./results
# Without Markdown report
curator test --all --report false

curator batch

Generates specs for all documents in a manifest in production mode (no semantic comparison).

Ventana de terminal
curator batch [--manifest <path>] [--output <dir>] [--country <cc>] [--standard <std>]
FlagDefaultDescription
--manifestce-specs/tests/curator_test_manifest.yamlPath to YAML manifest
--output./curator_outOutput directory
--countryESCountry code for curriculum context
--standardLOMLOECurriculum standard

Example:

Ventana de terminal
curator batch --manifest ce-specs/tests/lms_curator_test_manifest.yaml --output batch_output/

curator bloom derive

Derives new pedagogical exercises from an ingested seed spec using a configurable Bloom strategy.

Ventana de terminal
curator bloom derive --seed <referenceCode>
[--strategy SOURCE_DERIVATION|PROGRESSION|MISCONCEPTION_REMEDIATION]
[--context <standard/level/subject>]
[--levels SIMPLIFIED,STANDARD,EXTENDED,CHALLENGE]
[--count <n>]
[--focus <topic>]
[--output <dir>]
[--sandbox]

Flags:

FlagDefaultDescription
--seedrequiredreferenceCode of the ingested seed spec
--strategySOURCE_DERIVATIONBloom strategy to apply
--context(from seed)Curricular context: IB/HL/spanish_language
--levels(all 4)Difficulty tiers (PROGRESSION only): SIMPLIFIED,STANDARD,EXTENDED,CHALLENGE
--count2Number of exercises to generate (ignored for PROGRESSION)
--focusTopic or section to focus on within the seed
--output./bloom_outOutput directory for generated YAML specs
--sandboxfalseGenerate YAML files locally without registering in SpecManager

Endpoint: POST /api/v1/bloom/derive

Examples:

Ventana de terminal
# Derive 3 exercises from a private source document
curator bloom derive \
--seed ib.spa.textual_analysis_rubric \
--strategy SOURCE_DERIVATION \
--context IB/HL/spanish_language \
--count 3
# → Generated: bloom_out/ib.spa.derived.ex_001.yaml
# bloom_out/ib.spa.derived.ex_002.yaml
# bloom_out/ib.spa.derived.ex_003.yaml
# → Each YAML has metadata.provenance.seedRef = ib.spa.textual_analysis_rubric

Group docs — Document Discovery

docs discover

Discovers exam documents from known sources or web search.

Ventana de terminal
docs discover [--query "<text>"] [--source <id>] [--subject <slug>]
[--years "2022-2024"|"2022,2023"] [--call-type ordinaria|frq|mcq]
[--output <file.yaml>] [--dry-run]
FlagDescription
--queryFree-text for web search (requires Google CSE configured)
--sourceKnown source ID: collegeboard, madrid, boe, canvas-commons, ck12, europeana
--subjectSubject slug: lcl, matematicas, spanish_language, biology
--yearsRange "2022-2024" or list "2022,2023"
--call-typeordinaria | extraordinaria | frq | mcq
--outputSaves discovery list to a YAML file
--dry-runList candidates without HTTP verification

Internal strategies:

docs discover
├─ [--source canvas-commons|ck12|europeana] → LmsPackageDiscoveryStrategy (API)
├─ [--source collegeboard|madrid|boe...] → KnownSourcesStrategy (HEAD check URLs)
└─ [--query "..."] → WebSearchStrategy (Google CSE)

Examples:

Ventana de terminal
# AP College Board exams
docs discover --source collegeboard --subject spanish_language --years 2020-2024 \
--output ap_spanish.yaml
# Spanish selectividad (Madrid)
docs discover --source madrid --subject lcl --years 2022-2024 \
--call-type ordinaria --output selectividad_lcl.yaml
# Free web search (requires Google CSE)
docs discover --query "AP Spanish Language and Culture 2023 exam" --output web_ap.yaml
# Canvas Commons packages (requires COLABEDU_API_KEY_CANVAS)
docs discover --source canvas-commons --subject biology --output canvas_bio.yaml
# Europeana resources (requires COLABEDU_API_KEY_EUROPEANA)
docs discover --source europeana --subject history --output europeana_history.yaml
# Dry-run to explore without downloading
docs discover --source boe --subject matematicas --years 2023 --dry-run

docs download

Downloads documents from a discovery list to local disk.

Ventana de terminal
docs download --list <discovery_list.yaml> [--local-dir <dir>]
[--status FOUND] [--catalog true|false]
FlagDefaultDescription
--listrequiredPath to YAML produced by docs discover
--local-dirLocal directory to save downloads
--statusFOUNDOnly download documents with this status
--catalogtrueAdd downloaded docs to persistent source_catalog.yaml

Example:

Ventana de terminal
docs download --list ap_spanish.yaml --local-dir ce-specs/sources/us/ap/spanish/
# → Updates source_catalog.yaml automatically
# → Next step: docs catalog --list ap_spanish.yaml --manifest curator_manifest.yaml

docs catalog

Adds documents from a discovery list to the curator manifest.

Ventana de terminal
docs catalog --list <discovery_list.yaml> [--manifest <curator_manifest.yaml>]
[--filter-status DOWNLOADED] [--dry-run]
FlagDefaultDescription
--listrequiredDiscovery list YAML
--manifestCurator manifest to append entries to
--filter-statusDOWNLOADEDOnly include documents with this status
--dry-runfalsePrint YAML to console without writing to disk

Example:

Ventana de terminal
docs catalog \
--list ap_spanish.yaml \
--manifest ce-specs/tests/curator_test_manifest.yaml
# Dry-run to review before writing
docs catalog --list ap_spanish.yaml --dry-run

Queries the local downloaded source catalog.

Ventana de terminal
docs search [--subject <slug>] [--year <year>] [--source <id>]
[--curator-status PENDING|DONE|FAILED]

Example:

Ventana de terminal
docs search --subject biology --curator-status PENDING
# Lists all biology PDFs pending curation

docs sources

Lists all registered known document sources.

Ventana de terminal
docs sources [--scope global|es|us] [--subject <slug>]

Example:

Ventana de terminal
docs sources
docs sources --scope us --subject spanish_language

docs stats

Shows statistics from the local source catalog.

Ventana de terminal
docs stats
# → Total docs, by status, by subject, by source

Group taxonomy — Taxonomy Exploration

taxonomy standards

Lists all available curriculum standards, optionally filtered by country.

Ventana de terminal
taxonomy standards [--country <cc>]
# cc: es | us | mx | (empty = all)

Endpoint: GET /api/v1/taxonomy/options/countries + /countries/{code}/standards

Example:

Ventana de terminal
taxonomy standards --country us
# 🇺🇸 United States
# ├── std.intl.ap Advanced Placement (AP)
# ├── std.us.tx.teks Texas Essential Knowledge and Skills
# ├── std.intl.ib International Baccalaureate (IB)

taxonomy tree

Shows the levels and subjects tree for a standard.

Ventana de terminal
taxonomy tree --standard <std_id> [--subject <kw>]

Endpoints:

  • GET /api/v1/taxonomy/options/standards/{std}/levels
  • GET /api/v1/taxonomy/options/standards/{std}/subjects
  • GET /api/v1/taxonomy/options/standards/{std}/subjects/{sval}/variants

Example:

Ventana de terminal
taxonomy tree --standard std.intl.ap
taxonomy tree --standard std.es.lomloe --subject lcl

taxonomy rubrics

Lists available C0 rubrics in ce-specs/catalog/, with filter by standard and subject.

Ventana de terminal
taxonomy rubrics [--standard <kw>] [--subject <kw>]

Example:

Ventana de terminal
taxonomy rubrics --standard ap --subject spanish
taxonomy rubrics --standard lomloe --subject matematicas

taxonomy courses

Lists CourseBundle specs (BUNDLE_COURSE) for a country, standard, or referenceCode prefix.

Ventana de terminal
taxonomy courses [--country <cc>] [--standard <kw>] [--referenceCode <prefix>]

Endpoint: GET /api/v1/taxonomy/options/course-bundles?referenceCode=<prefix>

Example:

Ventana de terminal
taxonomy courses --country es --standard lomloe
taxonomy courses --referenceCode us.ap.spanish_language

taxonomy check

Full pre-flight check for a referenceCode before curation. Verifies:

  1. ✅ Taxonomy in DB (/api/v1/taxonomy/options/resolve)
  2. 📐 C0 rubrics in ce-specs/catalog/
  3. 🧪 C1 recipes in ce-specs/catalog/
  4. 📄 PDFs in ce-specs/sources/
  5. 📦 CourseBundles in DB
  6. 📄 Already-curated specs in curator_out/
Ventana de terminal
taxonomy check --referenceCode <code>

Example:

Ventana de terminal
taxonomy check --referenceCode us.ap.spanish_language.hl
# ╔══════════════════════════════════════════════════════════╗
# ║ Pre-flight Check: us.ap.spanish_language.hl ║
# ╚══════════════════════════════════════════════════════════╝
# 📚 TAXONOMY (DB)
# Standard: AP
# Level: HL
# ...
# RESULT: ✅ Ready to curate

taxonomy report

Generates a status table for all standards of a country (or all countries).

Ventana de terminal
taxonomy report [--country <cc>] [--save]
FlagDefaultDescription
--country(all)Filter by country code
--savefalseSave report as Markdown to curator_out/taxonomy_report.md

Example:

Ventana de terminal
taxonomy report --country es --save
taxonomy report # All countries

Group spec batch — Declarative Pipeline

spec batch run

Executes a staged spec pipeline from a YAML definition file.

Ventana de terminal
spec batch run --batch <file.yaml> [--from <stage>] [--dry-run]
FlagDescription
--batchRequired. Path to the batch YAML definition file
--fromResume from stage: taxonomy | discover | fetch | parse | approval | ingest
--dry-runShow execution plan without running anything

Pipeline stages:

taxonomy → discover → fetch → parse → approval → ingest

State is persisted in .ce-batch-state.json to allow resuming on failure.

Example:

Ventana de terminal
spec batch run --batch batch_ap_spanish.yaml
spec batch run --batch batch_ap_spanish.yaml --dry-run
spec batch run --batch batch_ap_spanish.yaml --from parse # Resume from parse

spec batch status

Shows the status of the last batch run (or by ID).

Ventana de terminal
spec batch status [--batch-id <id>]

Reads .ce-batch-state.json from the current directory.

Example:

Ventana de terminal
spec batch status
# Batch ID : batch-ap-spanish-2024
# Status : ✅ COMPLETED
# Discovered URLs : 12
# Fetched files : 11
# Parsed specs : 10
# Ingested ref codes : 10

spec batch generate

Generates a batch YAML definition from a natural language description using AI.

Ventana de terminal
spec batch generate --description "<description>" [--out batch.yaml] [--print]
FlagDefaultDescription
--descriptionrequiredHigh-level description of pedagogical content to ingest
--outbatch.yamlOutput file
--printPrint YAML to console instead of saving

Endpoint: POST /api/v1/curator/batch/generate

Example:

Ventana de terminal
spec batch generate \
--description "AP Spanish courses for high school in California" \
--out batch_ap_ca.yaml
spec batch generate --description "LOMLOE math exams 4 ESO" --print

Group curriculum — Curriculum Gap & Planning

The curriculum command group integrates the CurriculumArchitectService with the CLI. It reads curriculum requirements from spec-as-code YAML files (ce-specs/catalog/requirements/) to identify what specs are missing, and can launch targeted ACA plans to fill those gaps automatically.

curriculum gaps

Returns a structured gap analysis comparing existing specs against curriculum requirements.

Ventana de terminal
curriculum gaps --standard <STD> --country <CC>
FlagTypeRequiredDescription
--standardStringCurricular standard code (e.g. AP_SPANISH, LOMLOE)
--countryStringISO country code (US, ES, MX…)

Endpoint: GET /api/v1/curriculum/gaps?standard=&country=

Example:

Ventana de terminal
curriculum gaps --standard AP_SPANISH --country US
# 📊 Curriculum Gap Analysis — AP_SPANISH / US
# Coverage : 42.0% (21 / 50 specs)
#
# Theme SpecType REQ HAVE GAP
# ──────────────────────────────────────────────────────────────
# ❌ simulated_conversation C2_EXERCISES 10 2 8
# ❌ simulated_conversation INTERACTIVE_LESSON 5 0 5
# ⚠️ email_reply C2_EXERCISES 8 4 4
# ✅ cultural_comparison C2_EXERCISES 6 6 0

Icons:

  • coverage ≥ 100% — fully covered
  • ⚠️ coverage 50–99% — partially covered
  • coverage < 50% — critical gap

curriculum progress

Shows the aggregated ACA pipeline state across all plans for a given standard + country.

Ventana de terminal
curriculum progress --standard <STD> --country <CC>
FlagTypeRequiredDescription
--standardStringCurricular standard code
--countryStringISO country code

Endpoint: GET /api/v1/curriculum/progress?standard=&country=

Example:

Ventana de terminal
curriculum progress --standard AP_SPANISH --country US
# 🚀 Curriculum Progress — AP_SPANISH / US
# Overall : 58.0% complete
# Items : 8 DONE | 1 PENDING | 1 REVIEW | 0 FAILED
#
# Plan STATUS STAGE DONE PEND REV FAIL
# ─────────────────────────────────────────────────────────────────────────────
# CURRICULUM-AP_SPANISH-US-simulated... RUNNING c2_exercises 4 1 0 0
# CURRICULUM-AP_SPANISH-US-email_reply COMPLETED c2_exercises 4 0 1 0

curriculum plan create

Creates and immediately launches an ACA curator plan to fill a specific curriculum gap. The plan name is auto-generated as CURRICULUM-{standard}-{country}-{theme}-{specType}.

Ventana de terminal
curriculum plan create --standard <STD> --country <CC>
--theme <themeId> --spec-type <TYPE>
--sources "<url1>,<url2>,..."
[--subject <subject>] [--level <level>]
FlagDefaultDescription
--standardrequiredCurricular standard (e.g. AP_SPANISH)
--countryrequiredISO country code (US, ES…)
--themerequiredTheme ID from the requirements YAML (e.g. simulated_conversation)
--spec-typeC2_EXERCISESSpec type to produce: C2_EXERCISES, INTERACTIVE_LESSON, BLOCK_RUBRIC
--sourcesrequiredComma-separated source URLs to curate
--subjectspanishSubject area override
--level9-12Education level override

Endpoint: POST /api/v1/curriculum/plans

Example:

Ventana de terminal
curriculum plan create \
--standard AP_SPANISH \
--country US \
--theme simulated_conversation \
--spec-type C2_EXERCISES \
--sources "https://apcentral.collegeboard.org/media/pdf/ap23-apc-spanish-language.pdf,https://apcentral.collegeboard.org/media/pdf/ap22-apc-spanish-language.pdf"
# ✅ ACA Plan created and launched
# Plan ID : e4a1c230-...
# Items queued : 2
# Status : RUNNING
#
# Monitor with:
# aca plan status --id e4a1c230-...
# curriculum progress --standard AP_SPANISH --country US

Group user — User Operations

user provision

Provisions a single user via the backend Ops API.

Ventana de terminal
user provision --email <email> --name "<name>" [--role "teacher;admin"]
FlagDefaultDescription
--emailrequiredUser email
--namerequiredFull name
--roleteacherSemicolon-separated roles (e.g. teacher;admin)

Endpoint: POST /ops/v1/provisioning/trigger


user bulk-provision

Bulk-provisions users from a CSV file (email,name,role).

Ventana de terminal
user bulk-provision --file <users.csv>

Example CSV:

email,name,role
john@school.edu,John Smith,teacher
admin@school.edu,Admin User,teacher;admin

Group crm — CRM Operations

crm import-leads

Bulk-imports leads into CRM from a CSV file (email,name,state,subject).

Ventana de terminal
crm import-leads --file <leads.csv> [--owner <ownerId>]

Endpoint: POST /ops/v1/provisioning/crm/leads/ingest


Complete Workflow Examples

Workflow A: AP Exam Curation (Classic)

Ventana de terminal
# 1. Pre-flight check
taxonomy check --referenceCode us.ap.spanish_language.hl
# 2. Discover and download sources
docs discover --source collegeboard --subject spanish_language --years 2020-2024 \
--output ap_spanish.yaml
docs download --list ap_spanish.yaml --local-dir ce-specs/sources/us/ap/spanish/
# 3. Add to manifest and curate
docs catalog --list ap_spanish.yaml \
--manifest ce-specs/tests/curator_test_manifest.yaml
curator test --case ap_spanish_2023_ordinaria
# 4. Curate a specific document
curator curate \
--source ce-specs/sources/us/ap/spanish/ap_spanish_2023.pdf \
--referenceCode us.ap.spanish_language.hl \
--sections "Section I,Section II"
# 5. Validate and ingest
curator validate --spec curator_out/wf-abc123_spec_1_recipe_20240601.yaml
bash sync_specs.sh local GLOBAL

Workflow B: Canvas LMS Batch

Ventana de terminal
# 1. Discover Canvas Commons packages
docs discover --source canvas-commons --subject biology --output canvas_bio.yaml
# 2. Download
docs download --list canvas_bio.yaml --local-dir ce-specs/sources/lms/canvas/
# 3. Create LMS manifest
docs catalog --list canvas_bio.yaml \
--manifest ce-specs/tests/lms_curator_test_manifest.yaml
# 4. Run batch
curator batch --manifest ce-specs/tests/lms_curator_test_manifest.yaml \
--output batch_output/
# 5. Test LMS
curator test --lms --all

Workflow C: Declarative Batch Pipeline

Ventana de terminal
# 1. Generate definition from natural language
spec batch generate \
--description "selectividad Spanish language exams Madrid 2020-2024" \
--out batch_lcl_madrid.yaml
# 2. Review and execute
spec batch run --batch batch_lcl_madrid.yaml --dry-run
spec batch run --batch batch_lcl_madrid.yaml
# 3. Check status
spec batch status

Workflow D: Shared Pedagogical Review Queue

Ventana de terminal
# 1. Launch curation from CI/CD or CLI (no user assigned)
curator curate \
--source ce-specs/sources/us/ap/spanish/ap_spanish_2024.pdf \
--referenceCode us.ap.spanish_language.hl
# → job created with shared=true
# → 🟡 "Shared" badge appears in Job Command Center for all TEACHER/CONTENT_CREATOR
# 2. (Optional) Assign to a specific pedagogue
curator curate \
--source ap_spanish_2024.pdf \
--referenceCode us.ap.spanish_language.hl \
--user pedagogue@colabedu.org
# → job.shared = false, job.owner_email = "pedagogue@colabedu.org"
# → visible only for that user
# 3. Check job status
curator status --id <workflowId>
# 4. Pedagogue approves the job from the Job Command Center in the web UI
# → Status: PENDING_REVIEW → APPROVED → automatic registration in SpecManager
# 5. Ingest approved specs
bash sync_specs.sh local GLOBAL

Workflow E: Seed & Bloom — Content Derivation

Ventana de terminal
# STEP 1: Ingest a private source document as a seed
curator curate \
--source ce-specs/sources/seeds/ib_spa_textual_analysis_guide.pdf \
--referenceCode ib.spa.textual_analysis_rubric \
--visibility private
# → spec ingested with visibility=PRIVATE
# → NOT served to students, only used as derivation source
# STEP 2: Derive exercises from the seed
curator bloom derive \
--seed ib.spa.textual_analysis_rubric \
--strategy SOURCE_DERIVATION \
--context IB/HL/spanish_language \
--count 4 \
--focus "Section 1: Reading Comprehension"
# → 4 derived ExerciseSpec YAMLs in bloom_out/
# → Each has: metadata.provenance.seedRef = ib.spa.textual_analysis_rubric
# → visibility: PUBLIC
# STEP 3 (optional): Generate difficulty tiers from a derived exercise
curator bloom derive \
--seed ib.spa.derived.textual_analysis_ex_001 \
--strategy PROGRESSION
# → SIMPLIFIED / STANDARD / EXTENDED / CHALLENGE variants
# STEP 4: Review and ingest
curator validate --spec bloom_out/ib.spa.derived.textual_analysis_ex_001.yaml
bash sync_specs.sh local GLOBAL

Workflow F: Curriculum Gap → ACA Sprint

Ventana de terminal
# 1. Check what specs are missing for AP Spanish
curriculum gaps --standard AP_SPANISH --country US
# → Coverage 42%, critical gaps in simulated_conversation and email_reply
# 2. Discover relevant source documents
docs discover --source collegeboard --subject spanish_language --years 2020-2024 \
--output ap_spanish.yaml
# 3. Download sources
docs download --list ap_spanish.yaml --local-dir ce-specs/sources/us/ap/spanish/
# 4. Launch targeted ACA plan for the top gap (simulated_conversation)
curriculum plan create \
--standard AP_SPANISH \
--country US \
--theme simulated_conversation \
--spec-type C2_EXERCISES \
--sources "$(grep 'url:' ap_spanish.yaml | awk '{print $2}' | tr '\n' ',' | sed 's/,$//') "
# → Plan created: CURRICULUM-AP_SPANISH-US-simulated_conversation-C2_EXERCISES
# 5. Monitor ACA pipeline progress
curriculum progress --standard AP_SPANISH --country US
# → Overall 58% complete, 8 DONE, 1 PENDING
# 6. Handle NEEDS_REVIEW items
aca plan list <planId> --status NEEDS_REVIEW
aca plan approve <planId> --item <itemId>
# 7. Verify gap closure
curriculum gaps --standard AP_SPANISH --country US
# → simulated_conversation C2_EXERCISES: 10/10 ✅