mcpField
C
cxas-agent-foundry

cxas-agent-foundry

github.com/googlecloudplatformAgent workflows11397 installsUpdated today
Repository

About cxas-agent-foundry

cxas-agent-foundry is a workflow guide for the lifecycle of GECX conversational agents, intended for teams building, testing, and debugging agents. It requires initializing a checklist before work and routes tasks to relevant workflows or sub-agents.

Key features

  1. 01Covers agent building, testing, debugging, and iteration
  2. 02Requires initializing a todo.md checklist
  3. 03Routes tasks by intent to sub-skills
  4. 04Delegates analysis to specialized sub-agents
  5. 05Includes an environment readiness check

Use cases

  1. 01Build a GECX agent from a PRD
  2. 02Run or update agent evaluations
  3. 03Diagnose and fix evaluation failures
  4. 04Check changes to an existing agent

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/googlecloudplatform/cxas-scrapi --skill cxas-agent-foundry

After installing, type/cxas-agent-foundryin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

agents/
coverage-analyst.md
eval-writer.md
lint-fixer.md
scaffolder.md
tdd-writer.md
triage-failure.md
assets/project-template/
gecx-config.json
README.md
tdd.md
assets/project-template/cxas_app/Sample_Support_Agent/
app.json
assets/project-template/cxas_app/Sample_Support_Agent/agents/root_agent/
instruction.txt
root_agent.json
assets/project-template/cxas_app/Sample_Support_Agent/agents/root_agent/after_model_callbacks/after_model_callbacks_01/
python_code.py
assets/project-template/cxas_app/Sample_Support_Agent/agents/root_agent/before_agent_callbacks/before_agent_callbacks_01/
python_code.py
assets/project-template/cxas_app/Sample_Support_Agent/agents/root_agent/before_model_callbacks/before_model_callbacks_01/
python_code.py
assets/project-template/cxas_app/Sample_Support_Agent/agents/troubleshoot_agent/
instruction.txt
troubleshoot_agent.json
assets/project-template/cxas_app/Sample_Support_Agent/agents/troubleshoot_agent/before_model_callbacks/before_model_callbacks_01/
python_code.py
assets/project-template/cxas_app/Sample_Support_Agent/tools/lookup_account/
lookup_account.json
assets/project-template/cxas_app/Sample_Support_Agent/tools/lookup_account/python_function/
python_code.py
assets/project-template/cxas_app/Sample_Support_Agent/tools/payload_update_tool/
payload_update_tool.json
assets/project-template/cxas_app/Sample_Support_Agent/tools/payload_update_tool/python_function/
python_code.py
assets/project-template/cxas_app/Sample_Support_Agent/tools/set_session_state/
set_session_state.json
assets/project-template/cxas_app/Sample_Support_Agent/tools/set_session_state/python_function/
python_code.py
assets/project-template/evals/callback_tests/agents/root_agent/before_model_callbacks/before_model/
python_code.py
assets/project-template/evals/callback_tests/tests/root_agent/before_model_callbacks/before_model/
test.py
assets/project-template/evals/goldens/
example_auth_routing.yaml
example_escalation.yaml
assets/project-template/evals/simulations/
example_simulations.yaml
assets/project-template/evals/tool_tests/
example_tool_tests.yaml

Details

From the project README

Agent Foundry

End-to-end lifecycle for GECX conversational agents: build, test, debug, iterate.

Step tracking — MANDATORY (Phase 0, blocking)

Before doing ANY work — including running setup, asking questions, or scaffolding files — initialize <project>/todo.md from the relevant sub-skill's checklist (verbatim). The checklist is a contract, not a suggestion. If todo.md doesn't exist for the current task, refuse to proceed and create it first.

Long debug/build runs skip verification steps under pressure (e.g., pushing without linting, scaffolding without a TDD, claiming "deployed" without actually pushing). The checklist exists because of this. The instinct to skip a step is the moment the checklist earns its keep — that's when you must consult it, not the moment to bypass it.

Quick Reference

# Lint: dispatch agents/lint-fixer.md sub-agent — DO NOT run `cxas lint` on the main thread.
# Lint output is verbose; keep it inside the sub-agent context.

# Push local files to platform (only after lint-fixer returns status: clean)
cxas push --app-dir <project>/cxas_app/<AppName> \
  --to projects/<project_id>/locations/<location>/apps/<app_id> \
  --project-id <project_id> --location <location>

# Pull platform state to local (use --version-id to export an immutable version snapshot instead of live draft)
cxas pull projects/<project_id>/locations/<location>/apps/<app_id> \
  --project-id <project_id> --location <location> --target-dir <project>/cxas_app/ \
  [--version-id <version_id_or_name>]

# Run evals + triage + report (single command)
python .agents/skills/cxas-agent-foundry/scripts/run-and-report.py --message "what changed" --runs 5

# Generate dynamic interactive HTML dashboard with Gemini LLM failure clustering and parameter filters
python .agents/skills/cxas-agent-foundry/scripts/generate_interactive_report.py --input <path_to_sim_results.json> --output <path_to_report.html>

# Inspect app architecture
python .agents/skills/cxas-agent-foundry/scripts/inspect-app.py

# Triage failures
python .agents/skills/cxas-agent-foundry/scripts/triage-results.py --last 3

# Run all 6 build-verification gates against the deployed app
python .agents/skills/cxas-agent-foundry/scripts/gate-check.py

# Tune scoring thresholds (similarity, hallucination, extra-tools)
python .agents/skills/cxas-agent-foundry/scripts/app-thresholds.py show

# Sync callback Python code into evals/callback_tests/agents/ + create test.py symlinks.
# Required for tests to be discoverable by test_all_callbacks_in_app_dir.
python .agents/skills/cxas-agent-foundry/scripts/sync-callbacks.py                  # post-push: pull from platform
python .agents/skills/cxas-agent-foundry/scripts/sync-callbacks.py --from-local <app_dir>  # pre-push: copy from local app dir

# Snapshot app version (create immutable platform backup)
cxas versions create --app-name projects/<project_id>/locations/<location>/apps/<app_id> \
  --display-name "v1.0.0-snapshot" --description "Pre-refactor baseline"

# List and compare app versions
cxas versions list --app-name projects/<project_id>/locations/<location>/apps/<app_id>
cxas versions compare --app-name projects/<project_id>/locations/<location>/apps/<app_id> \
  --source <version_id_1> --target <version_id_2> --web

# Cold-start setup (first-time only — venv + project bootstrap)
.agents/skills/cxas-agent-foundry/scripts/setup.sh
python .agents/skills/cxas-agent-foundry/scripts/setup-project.py

Disambiguation: gate-check.py and inspect-app.py overlap on "show me the architecture" but gate-check.py is the answer whenever the user is about to push, finished building, or wants a verification pass. inspect-app.py is for a quick "what's in here" look without the verification gates. When in doubt, use gate-check.py.

Sub-agents

For heavy diagnosis/analysis work that would otherwise burn main-thread context, dispatch one of these sub-agents via the Agent tool. Pass the contents of the relevant .md file as the prompt, then add the inputs the file lists.

Sub-agentReasoning intensityWhen to use
agents/triage-failure.mdHIGHDiagnose ONE failing eval. Fan out for the top 5 failures by category priority in parallel. Iterate on more after the first batch returns.
agents/tdd-writer.mdHIGHReverse-engineer a TDD from an existing agent OR draft from PRD. Returns the TDD + open-questions handoff; main thread runs the show/ask/iterate loop with the user (sub-agents can't ask).
agents/scaffolder.mdMEDIUMBulk-generate all agent code (agent JSONs, instruction.txt, tool python_code, callbacks, app.json) from an APPROVED TDD. One dispatch replaces 30-60 main-thread file writes.
agents/coverage-analyst.mdMEDIUMGenerate a full eval coverage report against an agent's architecture.
agents/eval-writer.mdMEDIUMGenerate evals for one entire eval TYPE (all goldens, all sims, etc.) — reads TDD's Coverage Map itself. Max 4 dispatches per build.
agents/lint-fixer.mdLOW (mechanical)Run cxas lint and mechanically fix all errors + deterministic warnings until clean. Never run lint on main thread.

For running evals: there is no sub-agent. Use scripts/run-and-report.py --json-summary <path> > /dev/null 2>&1 and read the summary file — see references/debug.md → "Quick Start". The work was deterministic, so it lives in the script.

Reasoning intensity is a hint to the runtime: HIGH sub-agents benefit from more thinking budget / a stronger model, LOW sub-agents are recipe-driven and don't. Each sub-agent file repeats this hint at the top with a one-line justification.

Environment Readiness Check (run BEFORE routing)

Before routing to any sub-skill, check these signals in order:

  1. Virtualenv exists? -- Check if .venv/ directory exists
  2. Config exists? -- Check if .active-project file exists and the referenced <project>/gecx-config.json exists
  3. Has built before? -- Check if any <project>/cxas_app/ directory has content
SignalAction
No .venv/ or no configFirst-time setup needed. Load references/setup.md before doing anything else.
gecx-config.json exists but no cxas_app/ contentReturning user, new project. Route normally.
All existReturning user. Route normally.

Detect Intent and Route

Read what the user wants and load the appropriate sub-skill:

User says...PhaseLoad
"Build me an agent from this PRD"Buildreferences/build.md
"Create a new cxas app", "Make a new agent", "Set up an agent", "I wanna build an agent"Buildreferences/build.md
"Create evals for my agent"Buildreferences/build.md
"Generate tool tests", "create callback tests"Buildreferences/build.md
"Update evals -- requirements changed"Buildreferences/build.md
"Update the TDD"Buildreferences/build.md
"Run evals", "push evals", "check results"Runreferences/run.md
"Run tool tests", "test the callbacks"Runreferences/run.md
"Generate a report"Runreferences/run.md
"Generate interactive report", "cluster failures dashboard"Runreferences/generating-reports.md → "Interactive Diagnostic Dashboard"
"Why is this eval failing", "get to 90%"Debugreferences/debug.md
"Fix the failing evals", "debug the agent"Debugreferences/debug.md
"Tool test is failing", "callback test broke"Debugreferences/debug.md
"Snapshot app version", "Create version", "Compare versions", "List versions"Managereferences/api-reference.md → "Version Management"
"Edit the agent's instructions", "tweak the auth tool", "fix the greeting", "update this callback"Build (Edit cycle)references/build.md → "Editing an Existing Agent"

Any phrasing that implies creating, building, or setting up an agent/app routes to references/build.md — even if it sounds like "just create the app shell." "Create a new cxas app" is NOT a shortcut to scaffolding; it triggers the full build flow (todo.md → interview/PRD → TDD + approval → scaffold → lint → evals → push). Skipping the interview / TDD because the user said "create" instead of "build" is a routing failure.

Editing an existing agent (instruction tweak, tool change, callback fix) routes to build.md's "Editing an Existing Agent" section — the standard pull → edit → lint → push → run-evals cycle. Don't skip lint or the eval run after — silent regressions are how 90% rates drop to 70%.

If the intent is unclear, ask: "Are you looking to build/create evals, run them, or debug failures?"

Before Starting

Check memory for project-specific context (app ID, variable handling rules, audio scoring workarounds). If not available, ask the user.

Comments

Markdown supported