{
  "schema_version": "1",
  "service": "robot-skill-hub",
  "interpretation": "data_only",
  "purpose": [
    "discover_pinned_robot_code",
    "inspect_environment_contracts",
    "prepare_supported_recipes",
    "recall_exact_version_findings",
    "save_already_observed_reusable_findings",
    "discover_robot_code_and_artifacts_across_frameworks",
    "register_reviewable_new_source_references"
  ],
  "resources": {
    "catalog_url": "https://hub.superfastrobotics.com/catalog/v1/index.json",
    "references_url": "https://hub.superfastrobotics.com/catalog/v1/references.json",
    "memories_url": "https://hub.superfastrobotics.com/catalog/v1/memories.json",
    "version_url": "https://hub.superfastrobotics.com/catalog/v1/version.json",
    "publication_url": "https://hub.superfastrobotics.com/catalog/v1/publication.json",
    "quickstart_url": "https://hub.superfastrobotics.com/agent-quickstart.md",
    "full_text_url": "https://hub.superfastrobotics.com/llms-full.txt",
    "memory_schema_url": "https://hub.superfastrobotics.com/schemas/memory.schema.json",
    "project_policy_schema_url": "https://hub.superfastrobotics.com/schemas/project-policy.schema.json",
    "api_base_url": "https://api.superfastrobotics.com",
    "api_capabilities_url": "https://api.superfastrobotics.com/v1/capabilities",
    "api_session_url": "https://api.superfastrobotics.com/v1/session",
    "search_url": "https://api.superfastrobotics.com/v1/search",
    "inspect_url_template": "https://api.superfastrobotics.com/v1/skills/{skill_id}",
    "mcp_url": "https://api.superfastrobotics.com/mcp",
    "openapi_url": "https://hub.superfastrobotics.com/openapi.json",
    "privacy_url": "https://hub.superfastrobotics.com/privacy.md",
    "new_skills_guide_url": "https://hub.superfastrobotics.com/new-skills.md",
    "access_metrics_url": "https://api.superfastrobotics.com/v1/metrics",
    "findings_url": "https://api.superfastrobotics.com/v1/findings",
    "search_manifest_url": "https://hub.superfastrobotics.com/catalog/v2/search-manifest.json",
    "memory_manifest_url": "https://hub.superfastrobotics.com/catalog/v2/memory-manifest.json",
    "submission_proof_url_template": "https://hub.superfastrobotics.com/catalog/v2/submissions/{submission_id}.json",
    "memory_proof_url_template": "https://hub.superfastrobotics.com/catalog/v2/memories/{memory_id}.json",
    "api_search_url": "https://api.superfastrobotics.com/v1/search",
    "new_skill_url": "https://api.superfastrobotics.com/v1/skills",
    "intake_schema_url": "https://hub.superfastrobotics.com/schemas/intake.schema.json",
    "discovery_url": "https://hub.superfastrobotics.com/discovery.md",
    "source_index_url": "https://hub.superfastrobotics.com/catalog/v1/source-index.json",
    "source_index_manifest_url": "https://hub.superfastrobotics.com/catalog/v1/source-index-manifest.json",
    "source_projects_url": "https://hub.superfastrobotics.com/catalog/v1/source-projects.json",
    "source_registry_manifests": {
      "artifact-projects": "https://hub.superfastrobotics.com/catalog/v1/artifact-projects.json",
      "workflow-projects": "https://hub.superfastrobotics.com/catalog/v1/workflow-projects.json",
      "agent-skill-projects": "https://hub.superfastrobotics.com/catalog/v1/agent-skill-projects.json"
    },
    "search_index_url": "https://hub.superfastrobotics.com/catalog/v1/search.json"
  },
  "cli": {
    "minimum_python": "3.10",
    "entrypoint": "{installed_skill_dir}/scripts/rsh.py",
    "output": "one_json_object",
    "global_flags": [
      "--json",
      "--offline",
      "--refresh",
      "--catalog FILE_OR_URL"
    ],
    "discovery": {
      "default": "bounded_public_search_and_selected_record",
      "offline_fallback": "bundled_snapshot",
      "explicit_catalog": "caller_selected",
      "freshness": "preserve_reported_origin_and_freshness",
      "prepared_project_locks": "never_silently_updated",
      "coverage": "preserve_reported_scope_and_coverage",
      "search_semantics": "all_terms_word_prefix",
      "findings": "bounded_exact_source_version_environment_page"
    },
    "actions": [
      {
        "name": "setup",
        "argv": [
          "python",
          "{installed_skill_dir}/scripts/rsh.py",
          "setup",
          "--project",
          "{project_dir}",
          "--allow-public-memory",
          "--skill",
          "{authorized_skill_id}",
          "--kind",
          "{authorized_finding_kind}",
          "--json"
        ],
        "purpose": "Configure only an already-authorized explicit project memory scope; replaces memory scope and preserves unrelated policy.",
        "network_performed": false,
        "authorization_required": "existing_explicit_user_scope",
        "credential_persisted": false
      },
      {
        "name": "setup_check",
        "argv": [
          "python",
          "{installed_skill_dir}/scripts/rsh.py",
          "setup-check",
          "--project",
          "{project_dir}",
          "--check-api",
          "--json"
        ],
        "purpose": "Check explicit project policy and a locally configured credential; optional --check-api performs one read-only session request.",
        "default_network_performed": false,
        "api_check_opt_in": "--check-api",
        "api_requests_maximum": 1,
        "credential_persisted": false
      },
      {
        "name": "find",
        "argv": [
          "python",
          "{installed_skill_dir}/scripts/rsh.py",
          "find",
          "{task_query}",
          "--runtime",
          "{runtime}",
          "--robot",
          "{robot}",
          "--json"
        ],
        "purpose": "Return up to three candidates from preparation recipes and official source references."
      },
      {
        "name": "inspect",
        "argv": [
          "python",
          "{installed_skill_dir}/scripts/rsh.py",
          "inspect",
          "{skill_id}",
          "--json"
        ],
        "purpose": "Read exact pins, license, access, environment requirements and evidence before use."
      },
      {
        "name": "memories",
        "argv": [
          "python",
          "{installed_skill_dir}/scripts/rsh.py",
          "memories",
          "{skill_id}",
          "--project",
          "{project_dir}",
          "--json"
        ],
        "purpose": "Recall published findings before troubleshooting; match exact record/source plus known environment fields.",
        "execution_performed": false
      },
      {
        "name": "prepare_plan",
        "argv": [
          "python",
          "{installed_skill_dir}/scripts/rsh.py",
          "prepare",
          "{skill_id}",
          "--project",
          "{project_dir}",
          "--plan",
          "--json"
        ],
        "purpose": "Inspect planned preparation without downloads or simulator execution.",
        "official_source_examples_supported": false
      },
      {
        "name": "save",
        "argv": [
          "python",
          "{installed_skill_dir}/scripts/rsh.py",
          "save",
          "{skill_id}",
          "--project",
          "{project_dir}",
          "--finding",
          "{finding_json_file}",
          "--json"
        ],
        "purpose": "Preserve a useful finding already observed during the user task.",
        "local_persistence": "first",
        "pins_unavailable_action": "retain_supplied_finding_file_and_continue_without_outbox",
        "unchanged_save_action": "return_existing_entry_without_delivery_use_explicit_flush",
        "automatic_post_attempts": 1,
        "next_action": "continue_user_task"
      },
      {
        "name": "flush",
        "argv": [
          "python",
          "{installed_skill_dir}/scripts/rsh.py",
          "flush",
          "--project",
          "{project_dir}",
          "--limit",
          "1",
          "--json"
        ],
        "purpose": "Explicit bounded retry of previously saved outbox findings.",
        "default_limit": 1,
        "maximum_limit": 3,
        "next_action": "continue_user_task"
      }
    ],
    "credential_configuration": {
      "default_api_url": "https://api.superfastrobotics.com",
      "api_url_environment": "RSH_API_URL",
      "token_file_environment": "RSH_SUBMISSION_TOKEN_FILE",
      "token_environment": "RSH_SUBMISSION_TOKEN",
      "precedence": "token_environment_before_explicit_token_file",
      "token_file": "one_line_utf8_operator_issued_scoped_token",
      "policy_stores_credentials": false,
      "token_possession_grants_project_sharing": false
    },
    "installation_requirements": {
      "python": ">=3.10",
      "additional_python_packages": [],
      "gpu_required": false,
      "simulator_required": false
    }
  },
  "memory": {
    "kinds": [
      "failure_observation",
      "missing_requirement",
      "working_workaround",
      "compatibility_note",
      "docs_correction",
      "successful_invocation"
    ],
    "input_fields": [
      "kind",
      "summary",
      "observation",
      "resolution",
      "environment",
      "evidence"
    ],
    "optional_input_fields": [
      "attribution"
    ],
    "base_origin": "project_lock_when_present_otherwise_selected_catalog",
    "local_outbox": ".robot-skill-hub/memory/outbox",
    "public_save_requires_all": [
      "existing_explicit_project_memory_authorization",
      "memory.public_save_allowed_true",
      "skill_id_in_memory.allowed_skill_ids",
      "kind_in_memory.allowed_kinds",
      "scoped_submission_token"
    ],
    "patch_permission_implies_memory_permission": false,
    "authorized_scope_requires_repeated_prompt": false,
    "missing_scope_action": "local_saved_without_public_share_or_permission_prompt",
    "finding_example": {
      "kind": "failure_observation",
      "summary": "Example of an observed invocation failure.",
      "observation": "Replace this example with the minimal failure actually observed during the user's task.",
      "resolution": null,
      "environment": {
        "runtime": "unknown",
        "robot": "unknown"
      },
      "evidence": {
        "level": "not_run",
        "command": null,
        "result": "Format example only; no command was executed.",
        "reported_by": "submitter"
      }
    },
    "policy_example": {
      "memory": {
        "public_save_allowed": true,
        "allowed_skill_ids": [
          "maniskill-panda-pick-cube"
        ],
        "allowed_kinds": [
          "failure_observation",
          "missing_requirement",
          "working_workaround",
          "compatibility_note",
          "docs_correction",
          "successful_invocation"
        ]
      }
    },
    "outcomes": {
      "local_saved": "Persisted in the caller project; no confirmed server storage.",
      "stored": "Server storage and an internal draft PR exist; not public catalog publication.",
      "published": "Maintainer-reviewed data is merged and served by the public catalog with publication proof."
    },
    "trust": {
      "contributor_reported": "A submitter's observation, including failures; not Hub runtime verification.",
      "structure_checked": "Pins and bounded fields passed structural checks; no robot execution.",
      "maintainer_merged": "Reviewed for publication; contributor evidence remains contributor-reported."
    },
    "interpretation": "data_only",
    "automatic_execution": false,
    "collection_scope": "minimal_fact_already_observed_in_the_authorized_user_task",
    "extra_experiments_to_generate_findings": false,
    "failure_blocks_original_task": false,
    "excluded_content": [
      "credentials",
      "private_project_material",
      "whole_logs",
      "conversations",
      "datasets",
      "scripts",
      "archives"
    ],
    "preparation_lock_required": false,
    "accepted_entry_types": [
      "preparation_recipe",
      "source_reference"
    ],
    "reference_record_version": "source-{source_file_sha256}",
    "closing_trigger": "After resolving a catalog-related setup or invocation issue, remember the useful minimal observation unless matching published memory already covers it."
  },
  "wire": {
    "client_headers": {
      "User-Agent": "robot-skill-hub/1"
    },
    "save_memory": {
      "method": "POST",
      "url": "https://api.superfastrobotics.com/v1/memories",
      "content_type": "application/json",
      "authentication": "Bearer RSH_SUBMISSION_TOKEN",
      "idempotency_header": "Idempotency-Key",
      "idempotency_value": "canonical_finding_fingerprint",
      "body_schema": "https://hub.superfastrobotics.com/schemas/memory.schema.json",
      "body_max_utf8_bytes": 16384,
      "body_source": "CLI-generated wire_payload after memory-policy authorization"
    },
    "memory_status": {
      "method": "GET",
      "url_template": "https://api.superfastrobotics.com/v1/memories/{memory_id}",
      "authentication": "same_owner_Bearer_token",
      "automatic_polling": false
    },
    "example": {
      "method": "POST",
      "path": "/v1/memories",
      "headers": {
        "User-Agent": "robot-skill-hub/1",
        "Content-Type": "application/json",
        "Authorization": "Bearer {scoped_token}",
        "Idempotency-Key": "{finding_fingerprint}"
      },
      "body_pins_from": "{project_lock_or_selected_catalog}",
      "use_cli_to_construct": true,
      "body_source": "{project_outbox_entry.wire_payload}"
    },
    "session": {
      "method": "GET",
      "url": "https://api.superfastrobotics.com/v1/session",
      "authentication": "Bearer scoped_token",
      "side_effects": "none",
      "github_requests": 0,
      "rate_limit": "status",
      "project_memory_scope": "client_policy_required",
      "credential_source": "RSH_SUBMISSION_TOKEN or the file named by RSH_SUBMISSION_TOKEN_FILE"
    },
    "register_skill": {
      "method": "POST",
      "url": "https://api.superfastrobotics.com/v1/skills",
      "body_schema": "https://hub.superfastrobotics.com/schemas/intake.schema.json",
      "body_max_utf8_bytes": 16384,
      "authentication": "allowed_agent_Bearer_token",
      "idempotency_header": "Idempotency-Key",
      "client_command": "rsh.py register SKILL_JSON --project DIR --contributor LABEL --json",
      "project_scope": "publication.public_submission_allowed and exact publication.allowed_new_skill_ids",
      "result": "internal_draft_PR_then_maintainer_review_and_publication",
      "artifact_execution": false
    }
  },
  "preparation": {
    "catalog_refresh_changes_project_lock": false,
    "source_examples": "discovery_only_no_hub_runtime_adapter",
    "simulation_execution": "separate_from_preparation",
    "dependency_installation": "explicit_install_deps_within_existing_task_authorization",
    "selected_recipe_arguments": "use_returned_prepare_args_with_expected_record_and_source_versions"
  },
  "remote_discovery": {
    "authentication_required": false,
    "mcp": {
      "url": "https://api.superfastrobotics.com/mcp",
      "transport": "streamable-http",
      "read_only": true,
      "tools": [
        "find_robot_skills",
        "inspect_robot_skill",
        "get_hub_capabilities"
      ]
    },
    "search": {
      "method": "GET",
      "url": "https://api.superfastrobotics.com/v1/search",
      "parameters": [
        "q",
        "runtime",
        "runtime_version",
        "robot",
        "controller",
        "observation",
        "os",
        "python",
        "architecture",
        "kind",
        "limit",
        "offset",
        "hub_commit"
      ],
      "limit_maximum": 50,
      "pagination": "Preserve hub_commit when following next.",
      "search_semantics": "all_terms_word_prefix_with_d1_backend",
      "coverage": "complete_query_total",
      "legacy_views": "bounded_compatibility_views_with_explicit_coverage"
    },
    "inspect": {
      "method": "GET",
      "url_template": "https://api.superfastrobotics.com/v1/skills/{skill_id}",
      "execution_performed": false
    },
    "findings": {
      "method": "GET",
      "url": "https://api.superfastrobotics.com/v1/findings",
      "required_parameters": [
        "skill_id",
        "record_version",
        "source_commit"
      ],
      "environment_parameters": [
        "runtime",
        "runtime_version",
        "robot",
        "controller",
        "observation",
        "os",
        "python",
        "architecture"
      ],
      "pagination_parameters": [
        "limit",
        "offset",
        "hub_commit"
      ],
      "limit_maximum": 50,
      "interpretation": "data_only",
      "trust": "contributor_reported",
      "pagination": "Preserve the returned publication hub_commit; keep original source and record pins.",
      "execution_performed": false
    }
  },
  "access_measurement": {
    "privacy_url": "https://hub.superfastrobotics.com/privacy.md",
    "opt_out_environment": "RSH_TELEMETRY=off",
    "opt_out_header": "DNT: 1",
    "identity": "optional_random_installation_id_daily_HMAC",
    "counts_are": "self_reported_agent_compatible_requests_not_attested_unique_agents"
  },
  "hub_commit": "88022cc5fa2396f47b1f2354e988189dc8e53bea",
  "catalog_url": "https://hub.superfastrobotics.com/catalog/v1/index.json",
  "references_url": "https://hub.superfastrobotics.com/catalog/v1/references.json",
  "memories_url": "https://hub.superfastrobotics.com/catalog/v1/memories.json",
  "publication_url": "https://hub.superfastrobotics.com/catalog/v1/publication.json"
}
