{
  "schemaVersion": "1.0",
  "item": {
    "slug": "reveal-feedback",
    "name": "Reveal Product Feedback",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/tolulopeayo/reveal-feedback",
    "canonicalUrl": "https://clawhub.ai/tolulopeayo/reveal-feedback",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/reveal-feedback",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=reveal-feedback",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/api-reference.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/reveal-feedback"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/reveal-feedback",
    "agentPageUrl": "https://openagent3.xyz/skills/reveal-feedback/agent",
    "manifestUrl": "https://openagent3.xyz/skills/reveal-feedback/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/reveal-feedback/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Reveal Feedback Infrastructure",
        "body": "Reveal is a universal feedback platform where human reviewers screen-record themselves using products and provide AI-analyzed feedback. This skill connects to the Reveal REST API to manage the full feedback lifecycle."
      },
      {
        "title": "Authentication",
        "body": "All API calls require the REVEAL_API_KEY environment variable. The key is a vendor API key generated from the Reveal dashboard under Settings → API Keys.\n\nEvery request uses this header:\n\nAuthorization: Bearer $REVEAL_API_KEY\n\nBase URL: https://www.testreveal.ai/api/v1\n(Override with REVEAL_BASE_URL env var if set.)"
      },
      {
        "title": "1. Check dashboard overview",
        "body": "Fetch products, active review tasks, and unread notifications to give the user a quick status update.\n\nSteps:\n\nGET /products to list vendor products\nGET /review-tasks?status=active to list active tasks\nGET /notifications?unread=true&limit=5 to get unread notifications\nSummarize: product count, active tasks with submission progress, and recent notifications"
      },
      {
        "title": "2. Get feedback insights for a product",
        "body": "Fetch AI-aggregated insights: top issues, top positives, sentiment distribution, and suggestions.\n\nSteps:\n\nGET /products to find the product ID matching the user's request\nGET /insights/{productId} to get aggregated insights\nPresent: sentiment breakdown, top issues ranked by frequency, top positives, unique issue count"
      },
      {
        "title": "3. Get product analytics",
        "body": "Fetch quantitative metrics for a product.\n\nSteps:\n\nGET /products/{productId}/analytics\nPresent: total submissions, analyzed count, average completion rate, sentiment distribution, top issues, top positives"
      },
      {
        "title": "4. View review submissions",
        "body": "Get individual review submissions with transcripts, AI analysis, sentiment, and issue counts.\n\nSteps:\n\nGET /review-tasks?status=active&limit=5 to find the relevant task (or use a task ID if provided)\nGET /review-tasks/{taskId}/submissions to get all submissions\nFor each submission, present: status, sentiment, issue count, positive count, transcript preview"
      },
      {
        "title": "5. Create a review task",
        "body": "Create a new user-testing task so reviewers can test a product.\n\nSteps:\n\nGET /products to find the product matching the user's description\nExtract from the user's message: title, objective, steps, feedback focus, reviewer count\nPOST /review-tasks with body:\n\n{\n  \"title\": \"extracted title\",\n  \"productId\": \"matched product ID\",\n  \"requiredReviewers\": 5,\n  \"instructions\": {\n    \"objective\": \"what the reviewer should accomplish\",\n    \"steps\": \"step-by-step instructions\",\n    \"feedback\": \"what feedback to focus on\"\n  }\n}\n\nConfirm creation with task ID and details"
      },
      {
        "title": "6. Update a review task",
        "body": "Close, pause, or modify an existing review task.\n\nSteps:\n\nPATCH /review-tasks/{taskId} with fields to update (status, title, description, requiredReviewers)\nConfirm the update"
      },
      {
        "title": "7. List products",
        "body": "Show all products registered on the vendor's Reveal account.\n\nSteps:\n\nGET /products?limit=50\nPresent each product: name, category, platform support (web/mobile), website"
      },
      {
        "title": "8. Get notifications",
        "body": "Check for new activity on Reveal.\n\nSteps:\n\nGET /notifications?unread=true&limit=20\nPresent notification messages with timestamps\nIf user says to mark as read: PATCH /notifications with {\"markAllRead\": true}"
      },
      {
        "title": "9. Register a webhook",
        "body": "Set up real-time event notifications.\n\nSteps:\n\nPOST /webhooks with body:\n\n{\n  \"url\": \"https://user-provided-url\",\n  \"events\": [\"review.submitted\", \"review.analyzed\", \"task.completed\", \"video.generated\"]\n}\n\nReturn the webhook ID and signing secret. Instruct user to store the secret securely."
      },
      {
        "title": "10. List webhooks",
        "body": "Steps:\n\nGET /webhooks\nPresent each webhook: URL, subscribed events, active status"
      },
      {
        "title": "Response format",
        "body": "All API responses follow this structure:\n\nSuccess: { \"data\": { ... } }\nError: { \"error\": { \"code\": \"ERROR_CODE\", \"message\": \"description\" } }"
      },
      {
        "title": "Guardrails",
        "body": "Never expose or log the API key in responses to the user\nIf an API call fails with 401, tell the user their API key may be invalid or expired\nIf a product is not found, suggest listing products first\nWhen creating review tasks, always confirm the details with the user before sending the POST\nDo not fabricate feedback data — only report what the API returns"
      }
    ],
    "body": "Reveal Feedback Infrastructure\n\nReveal is a universal feedback platform where human reviewers screen-record themselves using products and provide AI-analyzed feedback. This skill connects to the Reveal REST API to manage the full feedback lifecycle.\n\nAuthentication\n\nAll API calls require the REVEAL_API_KEY environment variable. The key is a vendor API key generated from the Reveal dashboard under Settings → API Keys.\n\nEvery request uses this header:\n\nAuthorization: Bearer $REVEAL_API_KEY\n\n\nBase URL: https://www.testreveal.ai/api/v1 (Override with REVEAL_BASE_URL env var if set.)\n\nCapabilities\n1. Check dashboard overview\n\nFetch products, active review tasks, and unread notifications to give the user a quick status update.\n\nSteps:\n\nGET /products to list vendor products\nGET /review-tasks?status=active to list active tasks\nGET /notifications?unread=true&limit=5 to get unread notifications\nSummarize: product count, active tasks with submission progress, and recent notifications\n2. Get feedback insights for a product\n\nFetch AI-aggregated insights: top issues, top positives, sentiment distribution, and suggestions.\n\nSteps:\n\nGET /products to find the product ID matching the user's request\nGET /insights/{productId} to get aggregated insights\nPresent: sentiment breakdown, top issues ranked by frequency, top positives, unique issue count\n3. Get product analytics\n\nFetch quantitative metrics for a product.\n\nSteps:\n\nGET /products/{productId}/analytics\nPresent: total submissions, analyzed count, average completion rate, sentiment distribution, top issues, top positives\n4. View review submissions\n\nGet individual review submissions with transcripts, AI analysis, sentiment, and issue counts.\n\nSteps:\n\nGET /review-tasks?status=active&limit=5 to find the relevant task (or use a task ID if provided)\nGET /review-tasks/{taskId}/submissions to get all submissions\nFor each submission, present: status, sentiment, issue count, positive count, transcript preview\n5. Create a review task\n\nCreate a new user-testing task so reviewers can test a product.\n\nSteps:\n\nGET /products to find the product matching the user's description\nExtract from the user's message: title, objective, steps, feedback focus, reviewer count\nPOST /review-tasks with body:\n{\n  \"title\": \"extracted title\",\n  \"productId\": \"matched product ID\",\n  \"requiredReviewers\": 5,\n  \"instructions\": {\n    \"objective\": \"what the reviewer should accomplish\",\n    \"steps\": \"step-by-step instructions\",\n    \"feedback\": \"what feedback to focus on\"\n  }\n}\n\nConfirm creation with task ID and details\n6. Update a review task\n\nClose, pause, or modify an existing review task.\n\nSteps:\n\nPATCH /review-tasks/{taskId} with fields to update (status, title, description, requiredReviewers)\nConfirm the update\n7. List products\n\nShow all products registered on the vendor's Reveal account.\n\nSteps:\n\nGET /products?limit=50\nPresent each product: name, category, platform support (web/mobile), website\n8. Get notifications\n\nCheck for new activity on Reveal.\n\nSteps:\n\nGET /notifications?unread=true&limit=20\nPresent notification messages with timestamps\nIf user says to mark as read: PATCH /notifications with {\"markAllRead\": true}\n9. Register a webhook\n\nSet up real-time event notifications.\n\nSteps:\n\nPOST /webhooks with body:\n{\n  \"url\": \"https://user-provided-url\",\n  \"events\": [\"review.submitted\", \"review.analyzed\", \"task.completed\", \"video.generated\"]\n}\n\nReturn the webhook ID and signing secret. Instruct user to store the secret securely.\n10. List webhooks\n\nSteps:\n\nGET /webhooks\nPresent each webhook: URL, subscribed events, active status\nResponse format\n\nAll API responses follow this structure:\n\nSuccess: { \"data\": { ... } }\nError: { \"error\": { \"code\": \"ERROR_CODE\", \"message\": \"description\" } }\nGuardrails\nNever expose or log the API key in responses to the user\nIf an API call fails with 401, tell the user their API key may be invalid or expired\nIf a product is not found, suggest listing products first\nWhen creating review tasks, always confirm the details with the user before sending the POST\nDo not fabricate feedback data — only report what the API returns"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/tolulopeayo/reveal-feedback",
    "publisherUrl": "https://clawhub.ai/tolulopeayo/reveal-feedback",
    "owner": "tolulopeayo",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/reveal-feedback",
    "downloadUrl": "https://openagent3.xyz/downloads/reveal-feedback",
    "agentUrl": "https://openagent3.xyz/skills/reveal-feedback/agent",
    "manifestUrl": "https://openagent3.xyz/skills/reveal-feedback/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/reveal-feedback/agent.md"
  }
}