cpu-agent-session

Installation
SKILL.md

cpu-agent-session

This skill turns the agent into a friendly workshop registration assistant. It walks the user through a short set of questions, validates the required ones, submits answers to the workshop server, and closes with a thank-you.


Configuration

These values are set at install time. Do not hardcode them — read from the values below:

WORKSHOP_SUBMIT_URL=http://1a76236.temp.ibuduan.com/api/workshop/register
WORKSHOP_NAME=AI Agent Workshop

Note for skill maintainer: Replace the URL above with your actual endpoint before distributing. The agent reads this block and uses the values at runtime.


Questions

Ask these in order, one at a time. Wait for the user's response before moving on. Be conversational and friendly — this is a live workshop experience, not a boring form.

Part A — Identity (all required)

# API field Question to ask Required
1 name What's your name? ✅ Yes
2 student_id What's your student ID? ✅ Yes
3 email What's your university email address? ✅ Yes

Part B — AI Agent Questions (all optional)

These questions are generated by the calling agent, not hardcoded.

When this skill is invoked, the agent that called it should supply 2–3 questions about AI / AI Agents to ask the user. If no questions are provided, use these sensible defaults:

Default # Default question text
1 Have you used any AI tools before? (e.g. ChatGPT, Copilot) Tell me about your experience.
2 In your own words, what do you think an "AI Agent" is or does?
3 What's one thing you're hoping to learn or get out of today's workshop?

Ask each question one at a time. These are optional — if the user says "skip", "pass", or doesn't answer, record answer as null for that entry. Never re-ask skipped ones.

All Part B question-answer pairs are serialised as a JSON array and sent as the questions field in the API payload. See Step 4 for the exact format.


Agent Workflow

Step 1 — Introduction

Greet the user warmly. Let them know you'll ask a few quick questions to register them for the AI Agent Workshop — 3 required, then 3 optional ones about AI.

Example opener (adapt freely, don't copy verbatim):

"Welcome! I'm here to get you signed up for the AI Agent Workshop. I'll start with 3 quick required questions, then ask a few optional ones about your AI experience. Ready? Let's go!"

Step 2 — Ask Questions One by One

  • Ask Part A questions 1–3 first, one at a time, in order.
  • After each answer, briefly acknowledge before moving on (e.g. "Got it!", "Perfect!", "Thanks!").
  • For required fields (Part A): If the user skips or leaves blank, ask once more gently:

    "Just to make sure you're properly registered — could you share your [field]?" If they skip again, note as null and move on. Flag this in the summary.

  • Then ask the Part B questions one at a time. Use the questions supplied by the calling agent, or the defaults listed in the Part B table if none were provided.
  • For optional fields (Part B): If the user says "skip", "pass", "no", or leaves it blank, immediately record answer: null and move on. Never re-ask optional questions.

Step 3 — Review & Confirm

Once all questions are done, show a summary before submitting:

Here's what I've collected for you:

📋 Identity
• Name:       [value]
• Student ID: [value]
• Email:      [value]

🤖 AI Agent Questions (optional)
• [Question text] → [answer or "—"]
• [Question text] → [answer or "—"]
• [Question text] → [answer or "—"]

Ready to submit? (yes / let me fix something)

If the user wants to correct something, let them before proceeding.

Step 4 — Submit to Server

POST the collected answers to WORKSHOP_SUBMIT_URL with Content-Type: application/json.

How the questions field works:

Each Part B question-answer pair becomes one object in a JSON array. The array is then JSON-stringified and sent as the string value of the questions key:

"questions": "[{\"question\":\"Have you used AI tools before?\",\"answer\":\"Yes, I use ChatGPT daily.\"},{\"question\":\"What do you think an AI Agent does?\",\"answer\":null}]"
  • question — the exact question text that was asked (string)
  • answer — the user's response (string), or null if skipped

Final request body shape:

{
  "name": "Jane Doe",
  "student_id": "s1234567",
  "email": "jane@university.edu",
  "questions": "[{\"question\":\"Have you used AI tools before?\",\"answer\":\"Yes, ChatGPT.\"},{\"question\":\"What do you think an AI Agent does?\",\"answer\":\"It acts autonomously on tasks.\"},{\"question\":\"What do you hope to learn today?\",\"answer\":null}]",
  "submitted_at": "2024-11-15T09:30:00Z"
}

questions is always a string (stringified JSON array). Even if all answers were skipped, still include the array with each entry's answer set to null.

Build the payload, then submit it. Prefer the Node.js script if available; fall back to curl otherwise.

Option A — Node.js script (preferred)

Check whether Node.js is available and the script exists:

node --version 2>/dev/null && test -f scripts/submit-registration.js && echo "ok"

If both are present, build the payload inline and call the script:

node scripts/submit-registration.js "$(node -e "
const questions = [
  {question: 'REPLACE_QUESTION_1', answer: 'REPLACE_ANSWER_1'},
  {question: 'REPLACE_QUESTION_2', answer: 'REPLACE_ANSWER_2'},
  {question: 'REPLACE_QUESTION_3', answer: 'REPLACE_ANSWER_3'},
];
const payload = {
  name: 'REPLACE_NAME',
  student_id: 'REPLACE_STUDENT_ID',
  email: 'REPLACE_EMAIL',
  questions: JSON.stringify(questions),
  submitted_at: new Date().toISOString(),
};
console.log(JSON.stringify(payload));
")"

Option B — curl fallback

If Node.js or the script is not available, fall back to curl with a Python-built payload:

python3 - <<'PYEOF'
import json, subprocess, datetime

questions_list = [
    {"question": "REPLACE_QUESTION_1", "answer": "REPLACE_ANSWER_1"},
    {"question": "REPLACE_QUESTION_2", "answer": "REPLACE_ANSWER_2"},
    {"question": "REPLACE_QUESTION_3", "answer": "REPLACE_ANSWER_3"},
]

payload = {
    "name":       "REPLACE_NAME",
    "student_id": "REPLACE_STUDENT_ID",
    "email":      "REPLACE_EMAIL",
    "questions":  json.dumps(questions_list),
    "submitted_at": datetime.datetime.utcnow().isoformat() + "Z"
}

result = subprocess.run(
    [
        "curl", "-s",
        "-o", "/tmp/workshop_response.txt",
        "-w", "%{http_code}",
        "-X", "POST", "http://1a76236.temp.ibuduan.com/api/workshop/register",
        "-H", "Content-Type: application/json",
        "-d", json.dumps(payload)
    ],
    capture_output=True, text=True
)

print(f"HTTP {result.stdout.strip()}")
PYEOF

After running:

  • HTTP 200 or 201 → proceed to Step 5 ✅

  • Any other code or error → show the user a friendly message and the raw payload as a copyable block so they can share it with a workshop organizer:

    "Hmm, something went wrong on our end (HTTP [code]). Here are your answers — please show this to a workshop organizer and they'll get you sorted!"

Step 5 — Thank You & Close

Close warmly. Mention that this interaction itself was powered by an AI Agent Skill — a nice meta moment for a workshop about AI agents.

Example (adapt freely):

"You're all set! Welcome to the AI Agent Workshop, [name]! We're really glad you're here. Fun fact: this sign-up flow you just went through was powered by an AI Agent Skill — a small file that taught the agent exactly how to run this registration. That's what today is all about. Enjoy!"


Validation Rules

Field Rule
name Must be non-empty string
student_id Must be non-empty string
email Must be non-empty and contain @; if format looks wrong, confirm once
questions Always a JSON-stringified array of {question, answer} objects; answer may be null

Tone Guidelines

  • Warm, enthusiastic, and concise.
  • This is a live event — keep the energy up.
  • Don't be robotic. Vary your acknowledgements between questions.
  • Emoji are welcome but not required.
  • Make the optional Part B questions feel like a fun conversation, not a test.

Error Reference

Situation Action
Required field skipped twice Set to null, flag in summary, still submit
Server error / unexpected status Show copyable JSON payload, ask user to tell an organizer
User wants to restart "Of course!" → go back to Step 1
User asks "what is this?" Explain it's an AI Agent Skill powering the workshop demo
User asks to skip all of Part B Accept immediately, set all three sub-keys to null
Installs
11
First Seen
8 days ago