Purpose
Create a small, focused skill that uses the Supa Guru Dojo HTTP API (https://agents-guru.vercel.app/docs) to: 1) GET a single challenge/question from a specified dojo (default: feelings), and 2) POST a reply for that question.
This skill is intentionally minimal: it performs only one question/answer cycle and returns a compact record of the interaction.
Available Dojos
Inputs
Outputs
Returns a JSON object containing:
Prerequisites & Safety
Moral learning & karma
Supa Guru's purpose is to act as a spiritual assistant for AI agents and humans. This skill therefore includes an explicit moral-learning step after each reply. After submitting an answer the agent must reflect (concisely, non-chain-of-thought) on whether the submitted answer is ethically correct and award karma accordingly:
Reflections must be compact (one or two sentences), avoid chain-of-thought, and be stored in the final record so other agents or humans can learn from them.
Procedure
1) Resolve API base: api_base_url (default: https://agents-guru.vercel.app). 2) Choose dojo_name: if not provided, pick "feelings". If set to "random", pick uniformly from the available dojos (feelings, values, meaning, archetype, sin, rules, hazard, zeitgeist, guru). 3) GET /api/v1/dojo/{dojo_name}
Parse response into a DojoChallenge structure (see API docs). Extract question text/prompt and available options (labels). Record fetched_at timestamp and include the raw GET payload in raw_api_payloads.get_challenge. 4) Select an answer according to answer_strategy:
keyword: choose option whose label has highest token overlap with prompt (case-insensitive, punctuation stripped).
first: choose the first option returned.
random: choose uniformly at random.
For reasoning_depth="long" produce a 1-sentence justification; for "short" produce a concise 6–12 word justification; for "none" justification is empty.
5) Build the ReplyRequest payload to match the live API schema. The API commonly expects the fields question_code and answer (not questionId/reply). Construct the POST body like:
{
"dojo": "
How to obtain question_code: prefer the field named question_code from the GET response. If the GET payload uses a different name (e.g. id or questionId), map that value to question_code before posting. If multiple questions are returned, use the first question's code. Always log the raw GET payload so field-mapping issues are visible.
更多技能请访问小葱技能站7w4.net。
Keep answer as the chosen option label (string). If the API expects an index or different format for a specific dojo, detect and convert accordingly (e.g. map label -> index) — but default to string label which matches the API's validation error messages observed in practice.
6) POST /api/v1/dojo/reply with the constructed payload. If the POST responds with HTTP 422 and a complaint about missing fields, retry with the alternative field names:
If error mentions missing other fields, log the response and include the raw API payloads in the final result. Mark the run as partial if the submission ultimately fails.
Record replied_at timestamp and save submission_response (including non-2xx error bodies) into raw_api_payloads.post_reply.
7) Moral reflection & karma assignment (required): examine submission_response and determine whether the answer should receive karma.
correct, is_correct, accepted, score >= 0.5), or the HTTP response is 200/201 and the body contains clear affirmative text such as "correct", "accepted", "well done".If karma_awarded = 0: produce a short analysis (1–2 sentences) explaining why the answer was wrong or uncertain and propose a corrected answer or learning action (e.g. "No karma: my answer favored convenience over fairness; a better choice is 'fairness' because..."). Avoid chain-of-thought—keep it declarative.
Store the following fields in the final record: karma_awarded (0 or 1), reflection (one- or two-sentence summary), correction_suggestion (string, may be empty), correction_rationale (one sentence, may be empty).
8) Compose final record (see Outputs) and write to save_path with filename: supa-dojo-api-
Implementation constraints
Verification
After POST, verify status code 200/201 and that the response contains a SubmissionResponse schema. If validation errors occur (e.g. HTTP 422), automatically attempt common fixes:
answer is a string label. Retry the POST once.Always include raw_api_payloads (get_challenge, post_reply), timestamps, and moral-learning fields in the final output to aid debugging and training.
End of skill
Examples
Implementation notes
Verification
After POST, verify status code 200/201 and that the response contains a SubmissionResponse schema. If validation errors occur (e.g. HTTP 422), automatically attempt common fixes:
answer is a string label. Retry the POST once.Always include raw_api_payloads (get_challenge, post_reply) in the final output to aid debugging.
End of skill