[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AVKGW8FCJYYP0Z9ZVG7KH":3,"skill-same:01M71AVKGW8FCJYYP0Z9ZVG7KH":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":36,"ownerHtmlUrl":37,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":38,"install":39,"resources":52},"01M71AVKGW8FCJYYP0Z9ZVG7KH","alphafold3",null,"Submit, monitor and retrieve AlphaFold3 predictions using an explicitly configured compatible inference service and optional Kubernetes data plane.","AGI4Sci\u002FSciForge","AGI4Sci","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F266947901?v=4","01M71AVA4B4CVST1G4RH4QYN4T","01M71AVA4Y3ZPKX6JZGJDVZWMA",84,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Falphafold3\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25],"submit","kubernetes","monitor","data","service","predictions","plane","inference","2026-11-10 10:12:30",false,"---\nname: alphafold3\ndescription: Submit, monitor and retrieve AlphaFold3 predictions using an explicitly configured compatible inference service and optional Kubernetes data plane.\n---\n\n# AlphaFold3 inference service\n\nSubmit, monitor and download protein structure predictions using an operator-provided API compatible with the C550 task protocol. No endpoint, account, cluster or storage location is supplied by this skill. It does not install models or grant access.\n\nAlways distinguish (1) submission accepted, (2) inference reached a terminal state, and (3) CIF coordinates retrieved and analyzed. A queued\u002Frunning task is not molecular evidence; completion without CIF retrieval is execution-level evidence only.\n\n## Explicit configuration\n\nObtain configuration and authorization from your own operator. Set environment variables or shell assignments in a **trusted**, untracked `.env` beside this file. The script sources that file as shell code: never load an untrusted file or commit credentials. Prefer HTTPS; HTTP is accepted only for explicitly selected deployments. Do not embed credentials in URLs.\n\n| Variable | Required for |\n|---|---|\n| `ALPHAFOLD3_AUTH_URL` | Full HTTP(S) authentication endpoint, all operations |\n| `ALPHAFOLD3_TASKS_URL` | Full HTTP(S) task endpoint, all operations |\n| `ALPHAFOLD3_USERNAME` | Your service username, all operations |\n| `ALPHAFOLD3_PASSWORD` | Your service password, all operations |\n| `ALPHAFOLD3_MODEL_DIR` | Absolute remote model directory, submission; `--model-dir` overrides |\n| `ALPHAFOLD3_NAMESPACE` | Kubernetes namespace, upload\u002Fdownload\u002Fpreflight |\n| `ALPHAFOLD3_KUBECONFIG` | Readable explicit kubeconfig, upload\u002Fdownload\u002Fpreflight; `--kubeconfig` overrides |\n| `ALPHAFOLD3_INPUT_BASE` | Absolute remote upload root, local JSON\u002Fsequence |\n| `ALPHAFOLD3_OUTPUT_BASE` | Absolute remote fallback output root, download |\n\nMissing required values fail with the variable name **before any HTTP or kubectl invocation**. Malformed endpoints, embedded URL credentials, relative required remote roots and unreadable kubeconfig also fail locally. Cluster operations never fall back to ambient kubeconfig. HTTP-only submission\u002Fpolling of existing remote input requires no cluster configuration.\n\n`--help` is offline. `--preflight` is **not offline**: with full configuration it authenticates and queries the selected cluster. Run only with authorization; it proves neither inference nor coordinate retrieval.\n\n## Quick start\n\nAfter explicitly configuring the variables required by your mode:\n\n```bash\n# Local sequence: upload → submit → poll → download\nbash .codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh \\\n  --sequence MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG \\\n  --name My_Protein --output-dir .\u002Foutputs\u002Falphafold3\u002Fmy_run\n\n# Local JSON (alias: --json)\nbash .codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh \\\n  --json-input .\u002Fmy_input.json --output-dir .\u002Foutputs\u002Falphafold3\u002Fmy_run\n\n# Existing remote batch\nbash .codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh \\\n  --input-dir \"${REMOTE_INPUT_DIR:?Provide the existing remote directory}\" --no-wait\n\n# One existing remote JSON (alias: --json-path)\nbash .codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh \\\n  --remote-json \"${REMOTE_INPUT_JSON:?Provide the existing remote JSON path}\" --no-wait\n```\n\n`--input-dir` skips upload; `--remote-json` isolates one file instead of risking invalid neighboring JSON files. The compatible API's `input_json` is a remote filename, **not inline JSON**. Confirm filesystem accessibility with your operator.\n\n## Input format\n\n```json\n{\n  \"name\": \"My_Protein\", \"dialect\": \"alphafold3\", \"version\": 1,\n  \"modelSeeds\": [1],\n  \"sequences\": [{\"protein\": {\n    \"id\": \"A\", \"sequence\": \"MQIFVKTLTG\",\n    \"unpairedMsa\": \"\", \"pairedMsa\": \"\", \"templates\": []\n  }}]\n}\n```\n\nThe supported protocol requires `unpairedMsa`, `pairedMsa` and `templates`; empty values are supported when the server computes MSA. Missing fields can cause `ValueError: missing unpaired MSA`. For complexes, add entries with distinct chain IDs.\n\n## Options\n\n```text\n--sequence SEQ    Generate AF3 JSON from a protein sequence\n--name NAME       Task name (default: Fold)\n--json PATH       Upload local JSON (alias: --json-input)\n--input-dir DIR   Existing absolute remote batch directory\n--remote-json F   Existing absolute remote .json (alias: --json-path)\n--output-dir DIR  Local CIF download directory\n--model-dir DIR   Explicit remote model directory; overrides environment\n--kubeconfig F    Explicit kubeconfig; overrides environment\n--max-wait N      Maximum polls, 60 seconds apart (default: 90)\n--no-wait         Return after submission\n--preflight       Authorized HTTP and cluster readiness check\n--help            Offline help\n```\n\nUse `set -o pipefail` when piping logs to `tee`. Logs can include operator-selected paths and task metadata; review before sharing.\n\n## Manual API\n\nUse only an authorized service. Authenticate using JSON-encoded credentials:\n\n```bash\n: \"${ALPHAFOLD3_AUTH_URL:?}\" \"${ALPHAFOLD3_TASKS_URL:?}\"\n: \"${ALPHAFOLD3_USERNAME:?}\" \"${ALPHAFOLD3_PASSWORD:?}\"\nexport ALPHAFOLD3_USERNAME ALPHAFOLD3_PASSWORD\nAUTH_PAYLOAD=$(python3 -c 'import json,os; print(json.dumps({\"username\":os.environ[\"ALPHAFOLD3_USERNAME\"],\"password\":os.environ[\"ALPHAFOLD3_PASSWORD\"]}))')\nTOKEN=$(curl -fsS -X POST \"$ALPHAFOLD3_AUTH_URL\" \\\n  -H 'Content-Type: application\u002Fjson' -d \"$AUTH_PAYLOAD\" \\\n  | python3 -c 'import json,sys; print(json.load(sys.stdin)[\"token\"])')\n```\n\nSubmit a single existing remote JSON (use `input_dir` and your directory for batches):\n\n```bash\n: \"${ALPHAFOLD3_TASKS_URL:?}\" \"${TOKEN:?}\" \"${REMOTE_INPUT_JSON:?}\" \"${ALPHAFOLD3_MODEL_DIR:?}\"\nPAYLOAD=$(python3 -c 'import json,sys; print(json.dumps({\"task_type\":\"fold\",\"inputs\":{\"input_json\":sys.argv[1],\"model_dir\":sys.argv[2]}}))' \"$REMOTE_INPUT_JSON\" \"$ALPHAFOLD3_MODEL_DIR\")\nTASK_ID=$(curl -fsS -X POST \"$ALPHAFOLD3_TASKS_URL\" \\\n  -H \"Authorization: Bearer $TOKEN\" -H 'x-original-model: alphafold3' \\\n  -H 'Content-Type: application\u002Fjson' -d \"$PAYLOAD\" \\\n  | python3 -c 'import json,sys; print(json.load(sys.stdin)[\"task_id\"])')\n```\n\nGET and POST **task** requests require the model-routing header:\n\n```bash\n: \"${ALPHAFOLD3_TASKS_URL:?}\" \"${TASK_ID:?}\" \"${TOKEN:?}\"\ncurl -fsS \"${ALPHAFOLD3_TASKS_URL}\u002F${TASK_ID}\" \\\n  -H \"Authorization: Bearer $TOKEN\" -H 'x-original-model: alphafold3'\n```\n\nInspect task-reported `outputs.output_path`, confirm ownership of that path, then retrieve with the actual pod name (not a deployment):\n\n```bash\n: \"${ALPHAFOLD3_KUBECONFIG:?}\" \"${ALPHAFOLD3_NAMESPACE:?}\"\n: \"${REMOTE_CIF_PATH:?Set the task output path}\" \"${LOCAL_CIF_PATH:?Set local destination}\"\nPOD=$(kubectl --kubeconfig \"$ALPHAFOLD3_KUBECONFIG\" -n \"$ALPHAFOLD3_NAMESPACE\" \\\n  get pods -l app=alphafold3 -o jsonpath='{.items[0].metadata.name}')\n: \"${POD:?No AlphaFold3 pod found}\"\nkubectl --kubeconfig \"$ALPHAFOLD3_KUBECONFIG\" -n \"$ALPHAFOLD3_NAMESPACE\" \\\n  cp \"${POD}:${REMOTE_CIF_PATH}\" \"$LOCAL_CIF_PATH\"\n```\n\n## Output and troubleshooting\n\n- Open CIF\u002FmmCIF coordinates in PyMOL, ChimeraX or Biopython `MMCIFParser`.\n- Prefer task-reported paths; `ALPHAFOLD3_OUTPUT_BASE` supplies a fallback. Do not infer a private deployment's layout.\n- Completed metadata does not prove that a CIF was downloaded. Inspect coordinates before structural claims.\n- For API 404, check routing headers and endpoint compatibility with the operator, not another private host.\n- The script refreshes auth every ten polls. Token lifetime, rate limits, PVC sharing and output retention depend on the operator.\n- For `kubectl cp` failures, check explicit kubeconfig, namespace, actual pod name and authorization, not a personal default context.\n\n## Offline regression tests\n\nOnly Python stdlib and Bash are needed; HTTP\u002Fcluster commands are local test executables. Use a caller-owned `TMPDIR`\u002F`HOME` for isolation:\n\n```bash\npython3 -B .codex\u002Fskills\u002Falphafold3\u002Ftests\u002Ftest_submit.py -v\n```\n\nThese are offline contract tests, **not** real inference acceptance. Never use mocked responses as molecular results.\n","# AlphaFold3 inference service\n\nSubmit, monitor and download protein structure predictions using an operator-provided API compatible with the C550 task protocol. No endpoint, account, cluster or storage location is supplied by this skill. It does not install models or grant access.\n\nAlways distinguish (1) submission accepted, (2) inference reached a terminal state, and (3) CIF coordinates retrieved and analyzed. A queued\u002Frunning task is not molecular evidence; completion without CIF retrieval is execution-level evidence only.\n\n## Explicit configuration\n\nObtain configuration and authorization from your own operator. Set environment variables or shell assignments in a **trusted**, untracked `.env` beside this file. The script sources that file as shell code: never load an untrusted file or commit credentials. Prefer HTTPS; HTTP is accepted only for explicitly selected deployments. Do not embed credentials in URLs.\n\n| Variable | Required for |\n|---|---|\n| `ALPHAFOLD3_AUTH_URL` | Full HTTP(S) authentication endpoint, all operations |\n| `ALPHAFOLD3_TASKS_URL` | Full HTTP(S) task endpoint, all operations |\n| `ALPHAFOLD3_USERNAME` | Your service username, all operations |\n| `ALPHAFOLD3_PASSWORD` | Your service password, all operations |\n| `ALPHAFOLD3_MODEL_DIR` | Absolute remote model directory, submission; `--model-dir` overrides |\n| `ALPHAFOLD3_NAMESPACE` | Kubernetes namespace, upload\u002Fdownload\u002Fpreflight |\n| `ALPHAFOLD3_KUBECONFIG` | Readable explicit kubeconfig, upload\u002Fdownload\u002Fpreflight; `--kubeconfig` overrides |\n| `ALPHAFOLD3_INPUT_BASE` | Absolute remote upload root, local JSON\u002Fsequence |\n| `ALPHAFOLD3_OUTPUT_BASE` | Absolute remote fallback output root, download |\n\nMissing required values fail with the variable name **before any HTTP or kubectl invocation**. Malformed endpoints, embedded URL credentials, relative required remote roots and unreadable kubeconfig also fail locally. Cluster operations never fall back to ambient kubeconfig. HTTP-only submission\u002Fpolling of existing remote input requires no cluster configuration.\n\n`--help` is offline. `--preflight` is **not offline**: with full configuration it authenticates and queries the selected cluster. Run only with authorization; it proves neither inference nor coordinate retrieval.\n\n## Quick start\n\nAfter explicitly configuring the variables required by your mode:\n\n```bash\n# Local sequence: upload → submit → poll → download\nbash .codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh \\\n  --sequence MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG \\\n  --name My_Protein --output-dir .\u002Foutputs\u002Falphafold3\u002Fmy_run\n\n# Local JSON (alias: --json)\nbash .codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh \\\n  --json-input .\u002Fmy_input.json --output-dir .\u002Foutputs\u002Falphafold3\u002Fmy_run\n\n# Existing remote batch\nbash .codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh \\\n  --input-dir \"${REMOTE_INPUT_DIR:?Provide the existing remote directory}\" --no-wait\n\n# One existing remote JSON (alias: --json-path)\nbash .codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh \\\n  --remote-json \"${REMOTE_INPUT_JSON:?Provide the existing remote JSON path}\" --no-wait\n```\n\n`--input-dir` skips upload; `--remote-json` isolates one file instead of risking invalid neighboring JSON files. The compatible API's `input_json` is a remote filename, **not inline JSON**. Confirm filesystem accessibility with your operator.\n\n## Input format\n\n```json\n{\n  \"name\": \"My_Protein\", \"dialect\": \"alphafold3\", \"version\": 1,\n  \"modelSeeds\": [1],\n  \"sequences\": [{\"protein\": {\n    \"id\": \"A\", \"sequence\": \"MQIFVKTLTG\",\n    \"unpairedMsa\": \"\", \"pairedMsa\": \"\", \"templates\": []\n  }}]\n}\n```\n\nThe supported protocol requires `unpairedMsa`, `pairedMsa` and `templates`; empty values are supported when the server computes MSA. Missing fields can cause `ValueError: missing unpaired MSA`. For complexes, add entries with distinct chain IDs.\n\n## Options\n\n```text\n--sequence SEQ    Generate AF3 JSON from a protein sequence\n--name NAME       Task name (default: Fold)\n--json PATH       Upload local JSON (alias: --json-input)\n--input-dir DIR   Existing absolute remote batch directory\n--remote-json F   Existing absolute remote .json (alias: --json-path)\n--output-dir DIR  Local CIF download directory\n--model-dir DIR   Explicit remote model directory; overrides environment\n--kubeconfig F    Explicit kubeconfig; overrides environment\n--max-wait N      Maximum polls, 60 seconds apart (default: 90)\n--no-wait         Return after submission\n--preflight       Authorized HTTP and cluster readiness check\n--help            Offline help\n```\n\nUse `set -o pipefail` when piping logs to `tee`. Logs can include operator-selected paths and task metadata; review before sharing.\n\n## Manual API\n\nUse only an authorized service. Authenticate using JSON-encoded credentials:\n\n```bash\n: \"${ALPHAFOLD3_AUTH_URL:?}\" \"${ALPHAFOLD3_TASKS_URL:?}\"\n: \"${ALPHAFOLD3_USERNAME:?}\" \"${ALPHAFOLD3_PASSWORD:?}\"\nexport ALPHAFOLD3_USERNAME ALPHAFOLD3_PASSWORD\nAUTH_PAYLOAD=$(python3 -c 'import json,os; print(json.dumps({\"username\":os.environ[\"ALPHAFOLD3_USERNAME\"],\"password\":os.environ[\"ALPHAFOLD3_PASSWORD\"]}))')\nTOKEN=$(curl -fsS -X POST \"$ALPHAFOLD3_AUTH_URL\" \\\n  -H 'Content-Type: application\u002Fjson' -d \"$AUTH_PAYLOAD\" \\\n  | python3 -c 'import json,sys; print(json.load(sys.stdin)[\"token\"])')\n```\n\nSubmit a single existing remote JSON (use `input_dir` and your directory for batches):\n\n```bash\n: \"${ALPHAFOLD3_TASKS_URL:?}\" \"${TOKEN:?}\" \"${REMOTE_INPUT_JSON:?}\" \"${ALPHAFOLD3_MODEL_DIR:?}\"\nPAYLOAD=$(python3 -c 'import json,sys; print(json.dumps({\"task_type\":\"fold\",\"inputs\":{\"input_json\":sys.argv[1],\"model_dir\":sys.argv[2]}}))' \"$REMOTE_INPUT_JSON\" \"$ALPHAFOLD3_MODEL_DIR\")\nTASK_ID=$(curl -fsS -X POST \"$ALPHAFOLD3_TASKS_URL\" \\\n  -H \"Authorization: Bearer $TOKEN\" -H 'x-original-model: alphafold3' \\\n  -H 'Content-Type: application\u002Fjson' -d \"$PAYLOAD\" \\\n  | python3 -c 'import json,sys; print(json.load(sys.stdin)[\"task_id\"])')\n```\n\nGET and POST **task** requests require the model-routing header:\n\n```bash\n: \"${ALPHAFOLD3_TASKS_URL:?}\" \"${TASK_ID:?}\" \"${TOKEN:?}\"\ncurl -fsS \"${ALPHAFOLD3_TASKS_URL}\u002F${TASK_ID}\" \\\n  -H \"Authorization: Bearer $TOKEN\" -H 'x-original-model: alphafold3'\n```\n\nInspect task-reported `outputs.output_path`, confirm ownership of that path, then retrieve with the actual pod name (not a deployment):\n\n```bash\n: \"${ALPHAFOLD3_KUBECONFIG:?}\" \"${ALPHAFOLD3_NAMESPACE:?}\"\n: \"${REMOTE_CIF_PATH:?Set the task output path}\" \"${LOCAL_CIF_PATH:?Set local destination}\"\nPOD=$(kubectl --kubeconfig \"$ALPHAFOLD3_KUBECONFIG\" -n \"$ALPHAFOLD3_NAMESPACE\" \\\n  get pods -l app=alphafold3 -o jsonpath='{.items[0].metadata.name}')\n: \"${POD:?No AlphaFold3 pod found}\"\nkubectl --kubeconfig \"$ALPHAFOLD3_KUBECONFIG\" -n \"$ALPHAFOLD3_NAMESPACE\" \\\n  cp \"${POD}:${REMOTE_CIF_PATH}\" \"$LOCAL_CIF_PATH\"\n```\n\n## Output and troubleshooting\n\n- Open CIF\u002FmmCIF coordinates in PyMOL, ChimeraX or Biopython `MMCIFParser`.\n- Prefer task-reported paths; `ALPHAFOLD3_OUTPUT_BASE` supplies a fallback. Do not infer a private deployment's layout.\n- Completed metadata does not prove that a CIF was downloaded. Inspect coordinates before structural claims.\n- For API 404, check routing headers and endpoint compatibility with the operator, not another private host.\n- The script refreshes auth every ten polls. Token lifetime, rate limits, PVC sharing and output retention depend on the operator.\n- For `kubectl cp` failures, check explicit kubeconfig, namespace, actual pod name and authorization, not a personal default context.\n\n## Offline regression tests\n\nOnly Python stdlib and Bash are needed; HTTP\u002Fcluster commands are local test executables. Use a caller-owned `TMPDIR`\u002F`HOME` for isolation:\n\n```bash\npython3 -B .codex\u002Fskills\u002Falphafold3\u002Ftests\u002Ftest_submit.py -v\n```\n\nThese are offline contract tests, **not** real inference acceptance. Never use mocked responses as molecular results.\n",{"name":5,"description":7},"main","ba00016cd864127102e9736e8acfb942050bfc80",".codex\u002Fskills\u002Falphafold3",21,"https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge","https:\u002F\u002Fagi4sci.github.io\u002Fsciforge-docs-v2\u002F","https:\u002F\u002Fgithub.com\u002FAGI4Sci","2026-11-07 11:32:24",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add AGI4Sci\u002FSciForge --skill alphafold3",{"tool":45,"command":46},"bunx","bunx skills add AGI4Sci\u002FSciForge --skill alphafold3",{"tool":48,"command":49},"pnpm","pnpm dlx skills add AGI4Sci\u002FSciForge --skill alphafold3","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Falphafold3\u002FSKILL.md",true,[53,59,65,69],{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"scripts\u002Falphafold3_submit.sh","SCRIPT","脚本",17886,"https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Falphafold3\u002Fscripts\u002Falphafold3_submit.sh",{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"skill.json","REFERENCE","参考文档",761,"https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Falphafold3\u002Fskill.json",{"path":66,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":67,"sourceHtmlUrl":68},"tests\u002Ftest_security.py",7183,"https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Falphafold3\u002Ftests\u002Ftest_security.py",{"path":70,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":71,"sourceHtmlUrl":72},"tests\u002Ftest_submit.py",13506,"https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Falphafold3\u002Ftests\u002Ftest_submit.py",[74,102,119,130,145,176],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":78,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":26},"01M71AW8KVKM0X7GSHBSTCFYSQ","openspec-propose","Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.","MIT","https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fopenspec-propose\u002FSKILL.md",[],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101],"openspec","openspec propose","with","ready","proposal","change","cli","get","build","for","complete","design","new","implementation","generated","describe","use","when","artifacts","tasks",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":78,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":26},"01M71AW6FEH6HB37XGS0MNTWB4","openspec-explore","Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.","https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fopenspec-explore\u002FSKILL.md",[],[82,109,110,111,112,113,91,114,98,99,115,87,88,116,117,118],"explore","openspec explore","thinking","ideas","thinking partner","mode","requirements","partner","think","user",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":78,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":26},"01M71AW58RXBPM8878CPJ7B327","openspec-archive-change","Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.","https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fopenspec-archive-change\u002FSKILL.md",[],[87,126,82,127,128,95,88,98,99,129,92,118],"openspec archive change","archive","finalize","workflow",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":78,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":26},"01M71AW3YHB752B3NY5RH9FVZ2","openspec-apply-change","Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.","https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fopenspec-apply-change\u002FSKILL.md",[],[87,137,82,138,139,140,88,141,142,143,95,98,99,101,118,144],"openspec apply change","openspec apply","apply","work","continue","implementing","start","implement",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":78,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":159,"publishedAt":26},"01M71AW2GJ4W8T0R1F3RWAY2T6","research-memory","Draft, confirm, and synchronize research status, evidence, blockers, and review-ready GitHub summaries using the Research Memory skill, GitHub conventions, and file templates.","https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fresearch-memory\u002FSKILL.md",[151,156],{"categoryNo":152,"categoryName":153,"taxonomyType":154,"taxonomyTypeDesc":155},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":157,"categoryName":158,"taxonomyType":154,"taxonomyTypeDesc":155},"01JBSEEDCAT000000000000023","Skill与智能体开发",[160,161,162,163,85,164,165,166,167,168,169,170,171,172,173,174,175],"research","memory","research memory","draft","evidence","summaries","research status","github","templates","status","conventions","MCP","contributors","file","review","memory skill",{"skillNo":177,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":78,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":26},"01M71AW0VQ6S6NBENYYJ5G9BGE","https:\u002F\u002Fgithub.com\u002FAGI4Sci\u002FSciForge\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fopenspec-propose\u002FSKILL.md",[],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101]]