build-harness

Run, resume, and report build harness scenarios for prepare_rlm_org profiling and CCI TUI scratch org creation.

33|12|Updated Sep 24, 2024
One-click install
npx skills add https://github.com/bgaldino/rlm-base-dev --skill build-harness-bgaldino
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: build-harness
Source: https://github.com/bgaldino/rlm-base-dev/tree/main/.cursor/skills/build-harness
Command: npx skills add https://github.com/bgaldino/rlm-base-dev --skill build-harness-bgaldino

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires textual, pytest.

What problem does it solve? Running and debugging automated Salesforce org builds with prepare_rlm_org involves long-running scenarios, transient failures, and scattered artifacts. This Skill provides the commands, artifact locations, resume rules, and safety policies needed to operate the local build harness CLI and the CCI Build Manager TUI without guesswork. ## Core Features & Use Cases - Scenario-based profiling runs: Execute dev/ent default and lightweight scenarios from scripts/build_harness/scenarios.json with run, resume, report, and prune commands, including JSON output mode for agent automation. - Checkpoint resume and failure classification: Resume failed scenarios from checkpoint.json with flag-consistency checks, exit codes, and transient/deterministic failure signatures plus recommended actions in run_summary.json. - Guided scratch org creation via TUI: Launch the Textual-based CCI Build Manager with ./tui-cci, confirm shape/days/alias defaults with the user, and monitor builds with per-run cci_project materialization. - Use Case: A build fails mid-scenario on a network timeout. Inspect .harness/runs/<run_id>/ artifacts, confirm the failure is transient, then run the resume command with the same scenario flags to continue from the failed step instead of rebuilding from scratch. ## Quick Start Ask the agent to run the build harness for the ent-default scenario and report the results from the generated run artifacts.

Frequently Asked Questions about build-harness

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run build harness scenarios for prepare_rlm_org?

Run python scripts/build_harness/harness.py run from the repo root to execute all scenarios, or pass --scenario dev-default --scenario ent-default to select specific ones. Scenarios are defined in scripts/build_harness/scenarios.json and results are written under .harness/runs/<run_id>/.

How do I resume a failed build harness run?

Use python scripts/build_harness/harness.py resume --run-id <run_id> --scenario <scenario_id>. Resume starts from the failed step recorded in checkpoint.json, but it is blocked with exit code 30 if the current scenario flags differ from the checkpoint's effective_flags.

How do I create a scratch org with the CCI Build Manager TUI?

Launch ./tui-cci from the repo root and follow the wizard to pick org shape, alias, days, and runtime flag overrides. Confirm the defaults (shape ent, 30 days, auto-generated alias) with the user before creation, since failed TUI runs auto-delete orgs created in that run.

Why is my harness resume blocked after a failure?

Resume is blocked when checkpoint prerequisites are missing or when the current scenario's effective flags differ from those recorded in checkpoint.json. In that case, fix the underlying issue and perform a full re-run instead of resuming.

When should I not use the build harness?

Do not use the harness for normal one-off CCI tasks or flows without orchestration, editing SFDMU plans or Robot tests, or deploying metadata outside the harness/TUI path. It is specifically for scenario-based profiling, artifact investigation, and harness-managed org creation.

How do I run build harness tests after code changes?

Run .harness/tui-venv/bin/python -m pytest tests/build_harness/ from the repo root. If the venv is missing, create it with python -m venv .harness/tui-venv and install scripts/build_harness/tui/requirements.txt first.