{
  "schemaVersion": "1.0",
  "item": {
    "slug": "science-sim-author",
    "name": "Science Sim Author",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/dimgouso/science-sim-author",
    "canonicalUrl": "https://clawhub.ai/dimgouso/science-sim-author",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/science-sim-author",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=science-sim-author",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "agents/openai.yaml",
      "examples/projectile_drag.yml",
      "examples/rc_circuit.yml",
      "examples/spring_mass.yml",
      "rubrics/pedagogy_inquiry_prompts.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-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.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/science-sim-author"
    },
    "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/science-sim-author",
    "agentPageUrl": "https://openagent3.xyz/skills/science-sim-author/agent",
    "manifestUrl": "https://openagent3.xyz/skills/science-sim-author/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/science-sim-author/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": "Core promise",
        "body": "Generate one self-contained index.html that runs offline, renders a STEM simulation on a 2D canvas, exposes model parameters as sliders, plots a time series, and includes an inquiry worksheet."
      },
      {
        "title": "Inputs",
        "body": "Accept a SimSpec in YAML or JSON with:\n\nid, title, domain\nstate, params, initial, equations, outputs\noptional level, dt, worksheet, success_criteria\n\nValidate against templates/sim_spec_schema.json before generating anything."
      },
      {
        "title": "Output contract",
        "body": "Produce exactly one file named index.html.\nKeep all CSS in <style> and all JS in <script>.\nDo not use bundlers, package managers, CDNs, external fonts, or runtime network access.\nInclude these DOM ids: simCanvas, plotCanvas, runToggle, stepBtn, resetBtn, dtSlider, paramControls, readouts, statusBanner, worksheet, copyJsonBtn, downloadCsvBtn.\nInclude controls, readouts, one time-series plot, local JSON snapshot export, local CSV download, and a non-empty worksheet."
      },
      {
        "title": "Workflow",
        "body": "Validate the incoming SimSpec against templates/sim_spec_schema.json.\nNormalize the spec:\n\nIf dt is missing, use default=0.01, min=0.001, max=0.05.\nIf a parameter omits step, derive step=(max-min)/100 with sensible rounding.\nNormalize derivative aliases such as dx, dy, dvx, dvy, dq, dvc to canonical d<stateName> keys before generating JS.\nDefault readouts to t plus every state variable in state order.\n\n\nChoose the renderer:\n\nmechanics + state includes x and y -> trajectory2d\nmechanics + state includes x and v -> oscillator1d\nelectromagnetism + state includes q or vc -> circuit_rc\nOtherwise stop and ask the user for a clearer SimSpec instead of guessing.\n\n\nPopulate templates/sim_single_file_html_template.html with pre-normalized values.\nRun rubrics/validation_checklist.md before returning the final index.html."
      },
      {
        "title": "Template placeholders",
        "body": "Populate these mustache variables:\n\nsim_id, sim_title, domain, level, renderer_kind\nstate_json, params_json, initial_json, equations_json, outputs_json\nworksheet_json, success_criteria_json, readout_fields_json\ndt_default, dt_min, dt_max\nmodel_step_logic_js, scene_draw_js, readout_map_js\n\nExpectations:\n\nJSON placeholders must be serialized before insertion.\nString placeholders used in data attributes should be plain strings.\nmodel_step_logic_js must return a derivative object without using eval or Function.\nscene_draw_js and readout_map_js may be no-ops; use return []; for an empty readout override."
      },
      {
        "title": "Rendering and model rules",
        "body": "Use the shared RK4 and Euler integrators already present in the template.\nKeep physics fixed-step and rendering on requestAnimationFrame.\nAuto-pause if any state becomes NaN or Infinity.\nCap trail history and plot history.\nPrefer one clear plot target from outputs; if multiple plots are supplied, use the first one for the visible plot and keep the rest only as metadata."
      },
      {
        "title": "Worksheet rules",
        "body": "If the SimSpec provides a worksheet, keep it unless it is incomplete.\nIf any worksheet category is missing, synthesize it using rubrics/pedagogy_inquiry_prompts.md.\nAlways return:\n\n3 Predict prompts\n2 Test prompts\n2 Explain prompts\n2 Misconceptions prompts"
      },
      {
        "title": "Safety rules",
        "body": "Apply rubrics/security_notes.md strictly.\n\nDo not tell the user to run shell commands.\nDo not request secrets or API keys.\nDo not fetch remote assets or scripts.\nDo not add hidden telemetry or analytics.\nDo not produce multiple files."
      },
      {
        "title": "Templates and references",
        "body": "Template: templates/sim_single_file_html_template.html\nSchema: templates/sim_spec_schema.json\nValidation checklist: rubrics/validation_checklist.md\nPedagogy prompts: rubrics/pedagogy_inquiry_prompts.md\nSecurity notes: rubrics/security_notes.md"
      },
      {
        "title": "Examples",
        "body": "examples/projectile_drag.yml\nexamples/spring_mass.yml\nexamples/rc_circuit.yml"
      }
    ],
    "body": "Science Simulation Author\nCore promise\n\nGenerate one self-contained index.html that runs offline, renders a STEM simulation on a 2D canvas, exposes model parameters as sliders, plots a time series, and includes an inquiry worksheet.\n\nInputs\n\nAccept a SimSpec in YAML or JSON with:\n\nid, title, domain\nstate, params, initial, equations, outputs\noptional level, dt, worksheet, success_criteria\n\nValidate against templates/sim_spec_schema.json before generating anything.\n\nOutput contract\nProduce exactly one file named index.html.\nKeep all CSS in <style> and all JS in <script>.\nDo not use bundlers, package managers, CDNs, external fonts, or runtime network access.\nInclude these DOM ids: simCanvas, plotCanvas, runToggle, stepBtn, resetBtn, dtSlider, paramControls, readouts, statusBanner, worksheet, copyJsonBtn, downloadCsvBtn.\nInclude controls, readouts, one time-series plot, local JSON snapshot export, local CSV download, and a non-empty worksheet.\nWorkflow\nValidate the incoming SimSpec against templates/sim_spec_schema.json.\nNormalize the spec:\nIf dt is missing, use default=0.01, min=0.001, max=0.05.\nIf a parameter omits step, derive step=(max-min)/100 with sensible rounding.\nNormalize derivative aliases such as dx, dy, dvx, dvy, dq, dvc to canonical d<stateName> keys before generating JS.\nDefault readouts to t plus every state variable in state order.\nChoose the renderer:\nmechanics + state includes x and y -> trajectory2d\nmechanics + state includes x and v -> oscillator1d\nelectromagnetism + state includes q or vc -> circuit_rc\nOtherwise stop and ask the user for a clearer SimSpec instead of guessing.\nPopulate templates/sim_single_file_html_template.html with pre-normalized values.\nRun rubrics/validation_checklist.md before returning the final index.html.\nTemplate placeholders\n\nPopulate these mustache variables:\n\nsim_id, sim_title, domain, level, renderer_kind\nstate_json, params_json, initial_json, equations_json, outputs_json\nworksheet_json, success_criteria_json, readout_fields_json\ndt_default, dt_min, dt_max\nmodel_step_logic_js, scene_draw_js, readout_map_js\n\nExpectations:\n\nJSON placeholders must be serialized before insertion.\nString placeholders used in data attributes should be plain strings.\nmodel_step_logic_js must return a derivative object without using eval or Function.\nscene_draw_js and readout_map_js may be no-ops; use return []; for an empty readout override.\nRendering and model rules\nUse the shared RK4 and Euler integrators already present in the template.\nKeep physics fixed-step and rendering on requestAnimationFrame.\nAuto-pause if any state becomes NaN or Infinity.\nCap trail history and plot history.\nPrefer one clear plot target from outputs; if multiple plots are supplied, use the first one for the visible plot and keep the rest only as metadata.\nWorksheet rules\nIf the SimSpec provides a worksheet, keep it unless it is incomplete.\nIf any worksheet category is missing, synthesize it using rubrics/pedagogy_inquiry_prompts.md.\nAlways return:\n3 Predict prompts\n2 Test prompts\n2 Explain prompts\n2 Misconceptions prompts\nSafety rules\n\nApply rubrics/security_notes.md strictly.\n\nDo not tell the user to run shell commands.\nDo not request secrets or API keys.\nDo not fetch remote assets or scripts.\nDo not add hidden telemetry or analytics.\nDo not produce multiple files.\nTemplates and references\nTemplate: templates/sim_single_file_html_template.html\nSchema: templates/sim_spec_schema.json\nValidation checklist: rubrics/validation_checklist.md\nPedagogy prompts: rubrics/pedagogy_inquiry_prompts.md\nSecurity notes: rubrics/security_notes.md\nExamples\nexamples/projectile_drag.yml\nexamples/spring_mass.yml\nexamples/rc_circuit.yml"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dimgouso/science-sim-author",
    "publisherUrl": "https://clawhub.ai/dimgouso/science-sim-author",
    "owner": "dimgouso",
    "version": "0.1.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/science-sim-author",
    "downloadUrl": "https://openagent3.xyz/downloads/science-sim-author",
    "agentUrl": "https://openagent3.xyz/skills/science-sim-author/agent",
    "manifestUrl": "https://openagent3.xyz/skills/science-sim-author/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/science-sim-author/agent.md"
  }
}