Cxas Cuj Report Generator logo

Cxas Cuj Report Generator

Organization
GoogleCloudPlatform
cxas-cuj-report-generator

Automates the ingestion of customer requirement documents such as diagrams, BRDs, code etc., synthesizes high-fidelity natural transcripts, and compiles them into highly interactive, responsive Critical User Journey (CUJ) reports.

Overview

PublisherGoogleCloudPlatform
Repositorycxas-scrapi
Skill namecxas-cuj-report-generator
Stars
113
Forks
106
Bundled files
132
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 132 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by GoogleCloudPlatform on GitHub. Read the source before you install it.

Installation

Install the Cxas Cuj Report Generator AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/GoogleCloudPlatform/cxas-scrapi/tree/main/.agents/skills/cxas-cuj-report-generator
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/GoogleCloudPlatform/cxas-scrapi.git /tmp/cxas-scrapi
mkdir -p .claude/skills
cp -r /tmp/cxas-scrapi/.agents/skills/cxas-cuj-report-generator .claude/skills/cxas-cuj-report-generator
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Cxas Cuj Report Generator in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Cxas Cuj Report Generator on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Cxas Cuj Report Generator is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Critical User Journey (CUJ) Transcript & Report Generator Skill

Use this skill when asked to extract dialogue transcripts or compile interactive Critical User Journey (CUJ) reports from a directory of customer requirement documents (such as diagrams, BRDs, code etc.).

Core Protocols

To ensure 100% coverage and zero data loss, you MUST follow these core rules:

  • Robust Extraction: Follow the protocol defined in the cxas-protocol-robust-extraction skill.
  • Two-Phase Ingestion: Follow the protocol defined in the cxas-protocol-two-phase-ingestion sub-protocol inside protocols/cxas-protocol-two-phase-ingestion/.
  • Checklist Mandate: The orchestrator and all subagents MUST follow the agent-protocol-checklist protocol to maintain a local task_checklist.json file, ensuring they track their progress and not lose coverage during execution.
  • Orchestrator Delivery Assurance: The orchestrator MUST act as a strict, independent Delivery Auditor. BEFORE closing subagents, terminating the watchdog, or reporting campaign success to the user, the orchestrator MUST physically verify the existence, size bounds, and schema compliance of all registered deliverables (specifically gecx_customer_report.html and gecx_cuj_report.html) on disk. Under no circumstances may the orchestrator assume completion without executing a physical file-presence check.
  • Auditing: The orchestrator MUST periodically check the subagent's scratch directory to ensure the task_checklist.json file is being created and maintained. If the file is missing or not updated, the orchestrator MUST terminate the subagent and respawn it with stronger enforcement instructions.

Core Workflow Steps

Follow this 5-step structured workflow to execute the task:

  1. Scoping & Type Discovery: Prepare the environment and identify required skills.

    • Access Files: Ensure you have access to the source artifacts in your local workspace.

      • Tip (Drive Links): If the source is a Google Drive link or folder ID, you MUST use the gdrive skill to access them.
    • Detect Inventory Types: To identify framework signatures and map them to correct Ingestors, you MUST use the framework detector agent defined in agents/framework_detector.md. Using this agent, scan the input files to inventory all file extensions and detect potential frameworks. Spawn parallel Framework Detector subagents to scan partitions of the file tree.

    • Map Ingestors: Use the scoping report generated by the Framework Detector to select or create the correct specialized skills in ingestors/frameworks/ or ingestors/files/.

      • Precedence Rule: Framework-specific ingestors take precedence over generic file-extension ingestors (e.g., use ingestors/frameworks/adk/ instead of ingestors/files/py/ if both apply).
  2. Discovery: Spawn specialized expert subagents based on the discovered types to identify sub-intents (see the agents/ directory for role definitions). Dynamically discover and use specialized ingestor skills in ingestors/frameworks/ and ingestors/files/.

    • Mandatory Handoff: Subagents MUST report back:

      1. Frameworks detected,
      2. File types parsed, and
      3. Any files/patterns skipped as out-of-scope.
    • Exhaustive Use: Use all relevant ingestors by applying the most specific one applicable to each file.

    • Fallback: If no specialized ingestor exists for an out-of-scope file type, the orchestrator MUST delegate the analysis:

      1. Spawn Analyzer: Spawn a specialized Analysis Subagent to inspect a sample of the unknown file.
      2. Research: Instruct the subagent to search online or in internal documentation for format standards if the structure is not clear.
      3. Report & Codify: The subagent must report the best parsing strategy back to the orchestrator and SHOULD attempt to create a new specialized skill in ingestors/frameworks/ or ingestors/files/ to capture this knowledge.
  3. Exhaustion: Loop until no new intents are found.

  4. Clustering: Group into Parent CUJs. To ensure consistent and accurate category discovery:

    • Noise Reduction: Do NOT pass full objects with raw transcripts or code.
    • Summary Format: Provide a clean YAML list with id, name (stripped of technical tags), and a 1-sentence synthesized intent.
    • Guidance: Instruct the agent that a reasonable number of categories is typically between 5 and 10.
  5. Execution: Generate transcripts and reports using the tools in this directory.

    • Mandatory: Limit batch sizes to 5-10 items per subagent to prevent LLM context exhaustion and truncation.
    • Title Synthesis: For each transcript, the agent MUST synthesize a short, human-readable scenario title based on the dialogue content and the title of the CUJ and store it in the subintent_name field, rather than using raw technical IDs.
    • Immediate ID Verification: Always assume that sensitive numbers like Account Number or Order ID are checked in a backend system immediately after being provided by the user, and insert a webhook_call or tool_call accordingly.
    • Agent-First Transcripts: Every single transcript MUST start with a standard welcome greeting: "Hello! Thanks for calling [Brand]. How can I help you today?" (or a generic welcoming if no brand is specified, e.g. "Hello! Thanks for calling. How can I help you today?") with absolutely no exceptions or alternative phrasing, even if raw requirements suggest another name.
    • Voice Realism (No Spoken URLs): Agents on the voice channel cannot speak long URLs. You MUST NEVER write raw URLs (e.g., https://...) in Agent turns. Instead, the Agent must verbally state they are texting or emailing the link (e.g., "I've texted that tracking link to your phone").
    • Standardized End Session: Every conversation MUST close with a structured 3-turn sign-off sequence:
      1. Agent: "Is there anything else I can help you with today?"
      2. User: "No, that's all. Thank you."
      3. Agent: "Thank you for calling [Brand]! Goodbye." (or equivalent brand sign-off, e.g., "Thank you for calling Customer Support! Goodbye.", or "Thank you for calling! Goodbye." if no brand is specified) with absolutely no alternative phrasing allowed. The final Agent turn MUST trigger the end_session system tool call. Do NOT omit this tool call under any circumstances. It must match this CXAS schema: yaml tool_call: name: end_session payload: session_escalated: false reason: "Conversation completed successfully" response: result: "success"
    • Dual Reports: The agent MUST generate both a CUJ report (limiting examples to at most 3) AND a comprehensive full report (including all examples).
    • Usage: Run construct_report.py with --cuj_report=True to generate the CUJ report, and with --cuj_report=False to generate the comprehensive full report.

Autonomous Execution Guardrails

By default, this workflow is long-running and requires autonomous execution. You MUST follow these guardrails:

  1. Automatic Watchdog: Upon starting the task, you MUST automatically schedule a recurring timer (e.g., every 5 minutes using the schedule tool) to interrupt and check for stuck subagents or tasks.
  2. Initial Confirmation: In your very first response to the user, you MUST explicitly state that you are applying the Robust Extraction Protocol and that you have set a watchdog timer.
  3. Dynamic Bisecting: If a batch fails the Verification Gate twice due to missing items, automatically bisect the batch and spawn two parallel subagents to handle the smaller load.

Core Schema

All generated transcripts MUST adhere to the resources/schemas/transcript_schema.yml contract:

  • subintent_id: A unique slug.
  • subintent_name: Human-readable name.
  • parent_cuj: The high-level category.
  • turns: A list of dialogue objects.

Dialogue Turn Requirements

  • Speaker: Must be either Agent or User. Please ensure that function call turn comes immediately after a user turn.
  • Text: The literal string spoken.
  • Root-Level Call Fields: The tool_call (such as end_session) and webhook_call fields MUST be written at the root level of individual turn objects in the YAML transcript, and MUST NOT be nested under enrichment or any other parent key.
  • Enrichment:
    • intent_detected: Specify the NLU intent if applicable.
    • tool_call: Use when the agent invokes a local function.
    • webhook_call: Use when the agent triggers an external API.
    • system_action: Use for state transitions or background logic.

Linguistic & Voice Naturalness Standards

All generated spoken dialogue turns (Agent voice turns) MUST strictly adhere to high-fidelity spoken voice standards. Subagents must ensure:

  1. Numeric Voice Normalization: Spoken Agent turns MUST NOT contain raw digits, formatted currencies, or punctuation symbols representing numbers (e.g., do NOT write "450", "$909", "555-0199"). Instead, numbers must be explicitly spelled out phonetically:
    • Correct: "four hundred fifty points", "nine hundred nine dollars".
    • IDs, Times, Order Numbers, Percentages, and Phone Numbers: All numeric IDs, times, counts, reward points, percentages, or numbers of any kind must be written digit-by-digit or word-by-word phonetically with absolutely no punctuation or colon dividers: "five five five, zero, one, nine, nine", "seven thirty PM", "eight o'clock PM", "order number nine nine eight eight", "twenty percent discount".
    • Scheduling Confirmation: For any reservations or delivery updates that schedule or communicate a specific time, timeframe, or booking date (e.g., "ready in twenty minutes", "arrive in ten minutes", "booked for tomorrow at eight PM"), you MUST explicitly seek confirmation from the user (e.g. "Is that okay?", "Does that work for you?", or "Should we proceed with that?").
  2. Spoken Breath Span Limit: Agent turns must remain concise, natural, and conversational. Individual spoken text blocks MUST NOT exceed 300 characters inside a single turn.
  3. Vocabulary Smoothness: Avoid robotic repetitions of the same long words (do not repeat the same word of length 5+ more than 4 times in a single turn).
  4. Conversational Politeness: Every Agent spoken turn MUST include at least one standard polite voice marker (please, thank you, thanks, certainly, happy to help, welcome, goodbye, great day, my pleasure, certainly help) to ensure a warm, non-robotic user experience.

Execution Phase Details

During the Execution phase, subagents MUST NOT write directly to the transcript files.

  1. Generate a small YAML file containing the data for a single turn.
  2. Pass it to the append_turn.py script to build the transcript incrementally.
  3. Once all batches are verified, run construct_report.py to generate the final interactive HTML report.

Mandatory Subagent Prompting: When spawning subagents for batch execution, the orchestrator MUST include this instruction in their prompt:

"You must use append_turn.py for every turn. Do not summarize the dialogue. Generate a full, natural conversation for every item in your batch."

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

and 72 more files.

Frequently asked questions

What does the Cxas Cuj Report Generator AI skill do?

Automates the ingestion of customer requirement documents such as diagrams, BRDs, code etc., synthesizes high-fidelity natural transcripts, and compiles them into highly interactive, responsive Critical User Journey (CUJ) reports.

Why use Cxas Cuj Report Generator on TypingMind?

Because you install it once and use it with any model. Cxas Cuj Report Generator is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Cxas Cuj Report Generator in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/GoogleCloudPlatform/cxas-scrapi/tree/main/.agents/skills/cxas-cuj-report-generator. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Cxas Cuj Report Generator?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Cxas Cuj Report Generator?

As many as you like. As long as a model supports skills, you can use Cxas Cuj Report Generator with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Cxas Cuj Report Generator AI skill free?

Yes. It is published on GitHub by GoogleCloudPlatform under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇