[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CCHWGY2CCJ2YCM39B2CANN":3,"skill-same:01M6CCHWGY2CCJ2YCM39B2CANN":224},{"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":28,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":42,"ownerHtmlUrl":43,"ownerBlogUrl":42,"ownerDescription":44,"updatedAt":45,"install":46,"resources":59},"01M6CCHWGY2CCJ2YCM39B2CANN","boltz-protein-design",null,"Design new protein binders with Boltz. Use when generating protein, peptide, antibody, nanobody, or custom binder candidates for a target. Not for screening existing proteins or small molecules.","stigmer\u002Fstigmer","stigmer","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255479904?v=4","01M6CCFBFXXRZC4ZVNS3JSDV4W","Stigmer","01M6CCFBKY7M8QGR4GH9TT35MY",9,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31],"design","boltz protein design","use","2026-11-10 10:12:30",false,"---\nname: boltz-protein-design\ndescription: Design new protein binders with Boltz. Use when generating protein, peptide, antibody, nanobody, or custom binder candidates for a target. Not for screening existing proteins or small molecules.\n---\n\n## Workflow\n\nIf `boltz-api` is missing from `PATH`, use `boltz-cli-setup` for install\u002Fupdate guidance before retrying.\nIf a command reports missing or expired authentication, use `boltz-cli-setup` to start `boltz-api auth login --device-code` before retrying; do not ask permission first.\nIf the agent host sandbox blocks `boltz-api` install\u002Fauth\u002FAPI calls, use `boltz-cli-setup` to request the host sandbox bypass\u002Fescalation needed for user-wide CLI install, browser login, credential storage, temp files, or API access before retrying.\n\nUse this skill when the user wants de novo protein \u002F peptide \u002F antibody \u002F nanobody binders.\n\n1. **Decide on target exploration first (new targets).** For a new target where the user hasn't already fixed the binding site and crop, your first action — before authoring a payload, normalizing the target, or running `estimate-cost` — is to raise the choice between a target-exploration pass and designing directly, with a **recommendation** for this target:\n   - Unknown site, or a multi-domain \u002F large target → recommend exploration (it scouts different input configurations for generation, ≈50 designs each, and finds the best before a full run).\n   - A well-characterized site → it's fine to recommend going (mostly) direct, perhaps with a quick check of whether conditioning on the epitope beats letting the model find its own spot. State this plainly, as part of a conversation with the user about their target and goals, and let them choose.\n\n   Phrase it as a question that works *with* the user (they may know their target's biology), e.g.:\n\n   > \"This is a fresh target — I'd suggest a quick exploration pass that scouts a few framings and picks the best before a full run. Or, if you already know the site and crop, we can design directly. Which would you like?\"\n\n   **Do not mention a campaign size or tier here** — not even folded into this opening approach question. The full-run size is settled later, after the scouting runs pick a winner (its yield informs the tier), so don't ask it up front when exploration is on the table. If the user opts into exploration — or has already said they want to explore \u002F let the design find its own epitope — read [references\u002Ftarget-exploration.md](references\u002Ftarget-exploration.md), follow it, then resume at step 8 with the chosen framing and recommended `num_proteins`. If they want to design directly, continue below.\n2. Normalize the target (same shape as protein-screen): `structure_template` if a CIF\u002FPDB is available, else `no_template`.\n3. Pick the `binder_specification` variant. Supported variants include:\n   - `boltz_curated` — recommended default for antibody and nanobody design. Boltz selects from maintained scaffold\u002Ftemplate lists (`binder: boltz_antibody` or `boltz_nanobody`).\n   - `structure_template` — redesign motifs in an existing binder scaffold (CIF + `design_motifs` with `replacement` \u002F `insertion` segments).\n   - `no_template` — generate from the sequence DSL (fixed residues + designed segments like `5..10` or `8`).\n4. For antibody or nanobody requests, ask before authoring the payload: \"I recommend Boltz's curated antibody\u002Fnanobody scaffolds for this. Do you want the curated default, or do you have custom scaffold structures\u002FCDR motifs to use?\" If the user picks curated, use `type: boltz_curated`; if they want custom scaffold control, use `type: structure_template`.\n5. Pick `modality`: `peptide`, `antibody`, `nanobody`, or `custom_protein` for `structure_template` and `no_template` (use `custom_protein` for a \"miniprotein\" or generic \"protein binder\"). **If the user already named the modality, take it as given — don't ask again.** Do not include `modality` on `boltz_curated`; use `binder` instead.\n6. Pick `num_proteins` — see [Run sizing](#run-sizing). Valid range is **10 to 1,000,000** (server rejects outside it); **10** is the hard floor but it is a test size, not a campaign. When the user has not given a count, propose a campaign tier (default **50,000**), not the floor.\n7. Supported optional features include rules such as excluded amino acids, excluded sequence motifs with `X` wildcards, and max hydrophobic fraction. Add `rules` only on request; read [references\u002Fapi.md](references\u002Fapi.md) for exact shapes and examples.\n8. Author the payload YAML or JSON, then run `estimate-cost` and apply the **spending gate** (Always Do This) before `start`. (Cost model — tiered by total complex length, `estimate-cost` is the only source: see [`## Cost`](references\u002Fapi.md) in api.md.)\n9. `start` to submit. Capture the ID.\n10. Launch `download-results` with the agent runtime's background\u002Fnon-blocking command facility. In Claude Code, use Bash with `run_in_background: true`. In Codex, run `download-results` as a foreground shell command with `yield_time_ms: 1000`; if Codex returns a `session_id`, keep it for optional same-thread polling, but treat `download-status` plus the run directory as the durable source of truth. In Codex app\u002Fdesktop runtimes that expose same-thread heartbeat automations, create a heartbeat that checks `download-status` periodically and posts a concise completion or failure update when the download reaches a terminal state. After launching the downloader, always report the job ID, run name, and output directory. Include the next check cadence if the heartbeat was created; otherwise include the `download-status` command.\n11. Rank from `\u003Coutput-root>\u002F\u003Crun-name>\u002Fresults\u002Findex.jsonl` by `binding_confidence` descending. Use `iptm` and `min_interaction_pae` as tiebreakers. `optimization_score` is not emitted for this endpoint. Read [references\u002Fresults.md](references\u002Fresults.md) for output layout and metric details.\n\n## Run sizing\n\nDe novo design is a generate-and-filter campaign: you make many binders and keep the rare good ones, so a real run is **large**. Do not anchor on the `num_proteins` floor of 10 — that is only useful for a quick setup test. When the user names a count, honor it (≥10). When they do not, explain the tiers and propose one:\n\n| Tier | `num_proteins` | When |\n|---|---|---|\n| Small screen | 20,000 | Quick look \u002F tight budget |\n| **Medium (recommended)** | **50,000** | Default for a real campaign |\n| Large | 100,000 | Hard target \u002F maximal coverage |\n\nPresent the tiers as design **counts**, not dollars: don't put a price next to a tier unless `estimate-cost` returned it — run `estimate-cost` on the tier the user leans toward and show that figure, and never extrapolate one estimate across the others. Then apply the **spending gate** (Always Do This) before submitting. If the setup is unproven, suggest a small test run (tens of designs) or the full [target-exploration](references\u002Ftarget-exploration.md) pass first.\n\n## Command Pattern\n\n```bash\n# Replace placeholders with concrete absolute paths before running.\n# Use a short descriptive run name, for example: protein-design-\u003Cmodality>-\u003Ctarget>-v1\n\nboltz-api protein:design estimate-cost \\\n  --input @yaml:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fpayload.yaml\n\nboltz-api protein:design start \\\n       --idempotency-key \"\u003Crun-name>\" \\\n       --input @yaml:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fpayload.yaml \\\n       --raw-output --transform id\n\n# Copy the printed job ID into this command, then launch it in the agent\n# runtime's background\u002Fnon-blocking mode.\n# Claude Code: Bash with run_in_background=true.\n# Codex: foreground shell command with yield_time_ms=1000; keep the returned session_id if one is provided.\n# Do not append \"&\" or use nohup in Codex.\nboltz-api download-results \\\n  --id \"\u003Cjob-id-from-start>\" --name \"\u003Crun-name>\" \\\n  --root-dir \"\u002Fabsolute\u002Fpath\u002Fboltz-experiments\" \\\n  --poll-interval-seconds 60\n```\n\nPayload keys are `num_proteins`, `target`, `binder_specification` — API body field names.\n\n## Always Do This\n\n- **For a new target, your first move is the step-1 conversation — never jump straight to a payload.** Establish what the binder is *for* and whether the user has already fixed the binding site\u002Fcrop, then recommend a target-exploration pass vs. designing directly and let them choose (step 1). Only normalize the target and author a payload after that. If they've already fixed the site\u002Fcrop or explicitly want to design directly, proceed.\n- Enforce `10 \u003C= num_proteins \u003C= 1,000,000` before calling `estimate-cost` (server rejects outside that range), but 10 is the floor, not a campaign — see [Run sizing](#run-sizing) and propose a tier (default 50,000) when the user gives no count.\n- **Spending gate — explicit go-ahead before every `start`.** `start` spends real money. A plan you already described, an earlier phase's approval, or a cost that looks \"trivial\" are **not** authorization — even a cheap run needs a fresh yes. Run `estimate-cost`, show the `estimated_cost_usd` it returns (summed for a batch), and wait for the user to say go. This holds **even when tool calls are pre-approved** (accept-edits \u002F auto-accept \u002F bypass modes) — there you are the only cost gate. Never quote or assume a dollar figure you didn't get from `estimate-cost` (cost model: [`## Cost`](references\u002Fapi.md) in api.md).\n- For antibody or nanobody design, recommend `binder_specification.type: boltz_curated` and ask the user to confirm they do not want custom scaffold\u002FCDR control before building the payload. Use `binder: boltz_antibody` for antibody\u002FFab requests and `binder: boltz_nanobody` for nanobody\u002FVHH requests.\n- Residue indices are 0-based everywhere (`design_motifs.start_index`\u002F`end_index`, `after_residue_index`, `epitope_residues`, `flexible_residues`, bonds, constraints).\n- For CIF\u002FPDB bytes, use `@data:\u002F\u002F\u002Fabs\u002Fpath\u002Ffile.cif` inside `structure.data`. Don't use bare `@path`.\n- Sequence DSL for `designed_protein.value`: uppercase letters = fixed residues; integer `N` = exactly `N` designed residues; `MIN..MAX` = variable-length designed segment. Examples: `\"20\"`, `\"5..10\"`, `\"ACDE8GHI\"`, `\"MKTAYI5..10VKSHFSRQ\"`.\n- Keep payload field names exactly as the API body names shown in `references\u002Fapi.md`.\n- Use absolute paths for the output root, payload files, and embedded target files. Do not `cd` into the run directory for follow-up commands; pass the same `--root-dir` and use absolute paths so later relative paths do not drift.\n- Prefer one merged top-level payload via `--input @yaml:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fpayload.yaml` or `@json:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fpayload.json` for `estimate-cost` and `start`. Keep `--idempotency-key` and `--workspace-id` top-level; if they also appear inside `--input`, the top-level flags win.\n- Direct object flags still work as overrides, such as `--target @yaml:\u002F\u002F\u002Fabsolute\u002Fpath\u002Ftarget.yaml` or `--binder-specification @json:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fbinder.json`. Piped YAML \u002F JSON on stdin also works, but it must use API body field names. Use the same slug for both `--idempotency-key` and `--name`.\n- In permission-gated agents such as Claude Code, keep each Boltz call as a top-level command that starts with `boltz-api`. Prefer concrete arguments over `sh -c`, inline environment assignments, aliases, wrapper scripts, loops, or pipelines around the `boltz-api` invocation unless the user already allowed that exact command form. Use `--raw-output --transform id`, read the printed ID, then paste that literal ID into the next `download-results` command.\n- Prefer the agent runtime's background\u002Fnon-blocking command mode for `download-results`. In Codex specifically, keep `download-results` in the foreground and set the shell tool yield to 1000 ms; Codex will return a `session_id` if the command is still running. Do not append `&` or use `nohup` in Codex because the tool runner may clean up shell-backgrounded descendants before `.boltz-run.json` is fully written.\n- After the background\u002Fsession starts, do not manually wait on it or run ad hoc polling loops. Wall-clock time scales roughly with `num_proteins`: under 100 often finishes in a few minutes, 100-1,000 may take several minutes to tens of minutes, and larger runs can take longer or hours depending on inputs and system load. Don't quote a fixed duration. `--poll-interval-seconds 60` is a sensible downloader default. `download-results` emits JSONL progress on stderr by default; add `--progress-format text --verbose` only when you explicitly want human-readable logs.\n- In Codex app\u002Fdesktop runtimes with same-thread heartbeat automation support, schedule a heartbeat after launching `download-results`. The heartbeat should run `boltz-api --format json download-status --name \"\u003Crun-name>\" --root-dir \"\u002Fabsolute\u002Fpath\u002Fboltz-experiments\"` and stop once terminal. Choose cadence by `num_proteins`: under 100 -> every 1-2 minutes; 100-1,000 -> every 5 minutes; over 1,000 -> every 15 minutes. Post only material status changes or terminal completion\u002Ffailure. Poll the saved `session_id` with an empty `write_stdin` only for interactive, user-requested progress checks. Never run a manual poll loop in the current turn.\n- If the current host has no heartbeat automation support, do not claim an automatic next check. Report the job ID, run name, output directory, and the command needed to check `download-status`.\n- If detached download needs to be restarted, re-run `boltz-api download-results` with the same `--name \"\u003Crun-name>\"` and the same `--root-dir`.\n- Only add `rules` on explicit user request.\n\n## Escape Hatch\n\n- Payload reference: \u003Chttps:\u002F\u002Fapi.boltz.bio\u002Fdocs\u002Fapi\u002Fresources\u002Fprotein\u002Fsubresources\u002Fdesign\u002Fmethods\u002Fstart\u002F>\n- CLI flag names: `boltz-api protein:design start --help`\n\nRead [references\u002Fapi.md](references\u002Fapi.md) for all `binder_specification` variants, motif shapes, sequence DSL, rules, modalities, and `target` variants. Read [references\u002Fresults.md](references\u002Fresults.md) after download when ranking designed binders or explaining outputs.\n\n## Outputs\n\nRank from `results\u002Findex.jsonl` after `download-results`; use [references\u002Fresults.md](references\u002Fresults.md) for local file layout, metric meanings, and the designed-binder entity type gotcha.\n","## Workflow\n\nIf `boltz-api` is missing from `PATH`, use `boltz-cli-setup` for install\u002Fupdate guidance before retrying.\nIf a command reports missing or expired authentication, use `boltz-cli-setup` to start `boltz-api auth login --device-code` before retrying; do not ask permission first.\nIf the agent host sandbox blocks `boltz-api` install\u002Fauth\u002FAPI calls, use `boltz-cli-setup` to request the host sandbox bypass\u002Fescalation needed for user-wide CLI install, browser login, credential storage, temp files, or API access before retrying.\n\nUse this skill when the user wants de novo protein \u002F peptide \u002F antibody \u002F nanobody binders.\n\n1. **Decide on target exploration first (new targets).** For a new target where the user hasn't already fixed the binding site and crop, your first action — before authoring a payload, normalizing the target, or running `estimate-cost` — is to raise the choice between a target-exploration pass and designing directly, with a **recommendation** for this target:\n   - Unknown site, or a multi-domain \u002F large target → recommend exploration (it scouts different input configurations for generation, ≈50 designs each, and finds the best before a full run).\n   - A well-characterized site → it's fine to recommend going (mostly) direct, perhaps with a quick check of whether conditioning on the epitope beats letting the model find its own spot. State this plainly, as part of a conversation with the user about their target and goals, and let them choose.\n\n   Phrase it as a question that works *with* the user (they may know their target's biology), e.g.:\n\n   > \"This is a fresh target — I'd suggest a quick exploration pass that scouts a few framings and picks the best before a full run. Or, if you already know the site and crop, we can design directly. Which would you like?\"\n\n   **Do not mention a campaign size or tier here** — not even folded into this opening approach question. The full-run size is settled later, after the scouting runs pick a winner (its yield informs the tier), so don't ask it up front when exploration is on the table. If the user opts into exploration — or has already said they want to explore \u002F let the design find its own epitope — read [references\u002Ftarget-exploration.md](references\u002Ftarget-exploration.md), follow it, then resume at step 8 with the chosen framing and recommended `num_proteins`. If they want to design directly, continue below.\n2. Normalize the target (same shape as protein-screen): `structure_template` if a CIF\u002FPDB is available, else `no_template`.\n3. Pick the `binder_specification` variant. Supported variants include:\n   - `boltz_curated` — recommended default for antibody and nanobody design. Boltz selects from maintained scaffold\u002Ftemplate lists (`binder: boltz_antibody` or `boltz_nanobody`).\n   - `structure_template` — redesign motifs in an existing binder scaffold (CIF + `design_motifs` with `replacement` \u002F `insertion` segments).\n   - `no_template` — generate from the sequence DSL (fixed residues + designed segments like `5..10` or `8`).\n4. For antibody or nanobody requests, ask before authoring the payload: \"I recommend Boltz's curated antibody\u002Fnanobody scaffolds for this. Do you want the curated default, or do you have custom scaffold structures\u002FCDR motifs to use?\" If the user picks curated, use `type: boltz_curated`; if they want custom scaffold control, use `type: structure_template`.\n5. Pick `modality`: `peptide`, `antibody`, `nanobody`, or `custom_protein` for `structure_template` and `no_template` (use `custom_protein` for a \"miniprotein\" or generic \"protein binder\"). **If the user already named the modality, take it as given — don't ask again.** Do not include `modality` on `boltz_curated`; use `binder` instead.\n6. Pick `num_proteins` — see [Run sizing](#run-sizing). Valid range is **10 to 1,000,000** (server rejects outside it); **10** is the hard floor but it is a test size, not a campaign. When the user has not given a count, propose a campaign tier (default **50,000**), not the floor.\n7. Supported optional features include rules such as excluded amino acids, excluded sequence motifs with `X` wildcards, and max hydrophobic fraction. Add `rules` only on request; read [references\u002Fapi.md](references\u002Fapi.md) for exact shapes and examples.\n8. Author the payload YAML or JSON, then run `estimate-cost` and apply the **spending gate** (Always Do This) before `start`. (Cost model — tiered by total complex length, `estimate-cost` is the only source: see [`## Cost`](references\u002Fapi.md) in api.md.)\n9. `start` to submit. Capture the ID.\n10. Launch `download-results` with the agent runtime's background\u002Fnon-blocking command facility. In Claude Code, use Bash with `run_in_background: true`. In Codex, run `download-results` as a foreground shell command with `yield_time_ms: 1000`; if Codex returns a `session_id`, keep it for optional same-thread polling, but treat `download-status` plus the run directory as the durable source of truth. In Codex app\u002Fdesktop runtimes that expose same-thread heartbeat automations, create a heartbeat that checks `download-status` periodically and posts a concise completion or failure update when the download reaches a terminal state. After launching the downloader, always report the job ID, run name, and output directory. Include the next check cadence if the heartbeat was created; otherwise include the `download-status` command.\n11. Rank from `\u003Coutput-root>\u002F\u003Crun-name>\u002Fresults\u002Findex.jsonl` by `binding_confidence` descending. Use `iptm` and `min_interaction_pae` as tiebreakers. `optimization_score` is not emitted for this endpoint. Read [references\u002Fresults.md](references\u002Fresults.md) for output layout and metric details.\n\n## Run sizing\n\nDe novo design is a generate-and-filter campaign: you make many binders and keep the rare good ones, so a real run is **large**. Do not anchor on the `num_proteins` floor of 10 — that is only useful for a quick setup test. When the user names a count, honor it (≥10). When they do not, explain the tiers and propose one:\n\n| Tier | `num_proteins` | When |\n|---|---|---|\n| Small screen | 20,000 | Quick look \u002F tight budget |\n| **Medium (recommended)** | **50,000** | Default for a real campaign |\n| Large | 100,000 | Hard target \u002F maximal coverage |\n\nPresent the tiers as design **counts**, not dollars: don't put a price next to a tier unless `estimate-cost` returned it — run `estimate-cost` on the tier the user leans toward and show that figure, and never extrapolate one estimate across the others. Then apply the **spending gate** (Always Do This) before submitting. If the setup is unproven, suggest a small test run (tens of designs) or the full [target-exploration](references\u002Ftarget-exploration.md) pass first.\n\n## Command Pattern\n\n```bash\n# Replace placeholders with concrete absolute paths before running.\n# Use a short descriptive run name, for example: protein-design-\u003Cmodality>-\u003Ctarget>-v1\n\nboltz-api protein:design estimate-cost \\\n  --input @yaml:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fpayload.yaml\n\nboltz-api protein:design start \\\n       --idempotency-key \"\u003Crun-name>\" \\\n       --input @yaml:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fpayload.yaml \\\n       --raw-output --transform id\n\n# Copy the printed job ID into this command, then launch it in the agent\n# runtime's background\u002Fnon-blocking mode.\n# Claude Code: Bash with run_in_background=true.\n# Codex: foreground shell command with yield_time_ms=1000; keep the returned session_id if one is provided.\n# Do not append \"&\" or use nohup in Codex.\nboltz-api download-results \\\n  --id \"\u003Cjob-id-from-start>\" --name \"\u003Crun-name>\" \\\n  --root-dir \"\u002Fabsolute\u002Fpath\u002Fboltz-experiments\" \\\n  --poll-interval-seconds 60\n```\n\nPayload keys are `num_proteins`, `target`, `binder_specification` — API body field names.\n\n## Always Do This\n\n- **For a new target, your first move is the step-1 conversation — never jump straight to a payload.** Establish what the binder is *for* and whether the user has already fixed the binding site\u002Fcrop, then recommend a target-exploration pass vs. designing directly and let them choose (step 1). Only normalize the target and author a payload after that. If they've already fixed the site\u002Fcrop or explicitly want to design directly, proceed.\n- Enforce `10 \u003C= num_proteins \u003C= 1,000,000` before calling `estimate-cost` (server rejects outside that range), but 10 is the floor, not a campaign — see [Run sizing](#run-sizing) and propose a tier (default 50,000) when the user gives no count.\n- **Spending gate — explicit go-ahead before every `start`.** `start` spends real money. A plan you already described, an earlier phase's approval, or a cost that looks \"trivial\" are **not** authorization — even a cheap run needs a fresh yes. Run `estimate-cost`, show the `estimated_cost_usd` it returns (summed for a batch), and wait for the user to say go. This holds **even when tool calls are pre-approved** (accept-edits \u002F auto-accept \u002F bypass modes) — there you are the only cost gate. Never quote or assume a dollar figure you didn't get from `estimate-cost` (cost model: [`## Cost`](references\u002Fapi.md) in api.md).\n- For antibody or nanobody design, recommend `binder_specification.type: boltz_curated` and ask the user to confirm they do not want custom scaffold\u002FCDR control before building the payload. Use `binder: boltz_antibody` for antibody\u002FFab requests and `binder: boltz_nanobody` for nanobody\u002FVHH requests.\n- Residue indices are 0-based everywhere (`design_motifs.start_index`\u002F`end_index`, `after_residue_index`, `epitope_residues`, `flexible_residues`, bonds, constraints).\n- For CIF\u002FPDB bytes, use `@data:\u002F\u002F\u002Fabs\u002Fpath\u002Ffile.cif` inside `structure.data`. Don't use bare `@path`.\n- Sequence DSL for `designed_protein.value`: uppercase letters = fixed residues; integer `N` = exactly `N` designed residues; `MIN..MAX` = variable-length designed segment. Examples: `\"20\"`, `\"5..10\"`, `\"ACDE8GHI\"`, `\"MKTAYI5..10VKSHFSRQ\"`.\n- Keep payload field names exactly as the API body names shown in `references\u002Fapi.md`.\n- Use absolute paths for the output root, payload files, and embedded target files. Do not `cd` into the run directory for follow-up commands; pass the same `--root-dir` and use absolute paths so later relative paths do not drift.\n- Prefer one merged top-level payload via `--input @yaml:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fpayload.yaml` or `@json:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fpayload.json` for `estimate-cost` and `start`. Keep `--idempotency-key` and `--workspace-id` top-level; if they also appear inside `--input`, the top-level flags win.\n- Direct object flags still work as overrides, such as `--target @yaml:\u002F\u002F\u002Fabsolute\u002Fpath\u002Ftarget.yaml` or `--binder-specification @json:\u002F\u002F\u002Fabsolute\u002Fpath\u002Fbinder.json`. Piped YAML \u002F JSON on stdin also works, but it must use API body field names. Use the same slug for both `--idempotency-key` and `--name`.\n- In permission-gated agents such as Claude Code, keep each Boltz call as a top-level command that starts with `boltz-api`. Prefer concrete arguments over `sh -c`, inline environment assignments, aliases, wrapper scripts, loops, or pipelines around the `boltz-api` invocation unless the user already allowed that exact command form. Use `--raw-output --transform id`, read the printed ID, then paste that literal ID into the next `download-results` command.\n- Prefer the agent runtime's background\u002Fnon-blocking command mode for `download-results`. In Codex specifically, keep `download-results` in the foreground and set the shell tool yield to 1000 ms; Codex will return a `session_id` if the command is still running. Do not append `&` or use `nohup` in Codex because the tool runner may clean up shell-backgrounded descendants before `.boltz-run.json` is fully written.\n- After the background\u002Fsession starts, do not manually wait on it or run ad hoc polling loops. Wall-clock time scales roughly with `num_proteins`: under 100 often finishes in a few minutes, 100-1,000 may take several minutes to tens of minutes, and larger runs can take longer or hours depending on inputs and system load. Don't quote a fixed duration. `--poll-interval-seconds 60` is a sensible downloader default. `download-results` emits JSONL progress on stderr by default; add `--progress-format text --verbose` only when you explicitly want human-readable logs.\n- In Codex app\u002Fdesktop runtimes with same-thread heartbeat automation support, schedule a heartbeat after launching `download-results`. The heartbeat should run `boltz-api --format json download-status --name \"\u003Crun-name>\" --root-dir \"\u002Fabsolute\u002Fpath\u002Fboltz-experiments\"` and stop once terminal. Choose cadence by `num_proteins`: under 100 -> every 1-2 minutes; 100-1,000 -> every 5 minutes; over 1,000 -> every 15 minutes. Post only material status changes or terminal completion\u002Ffailure. Poll the saved `session_id` with an empty `write_stdin` only for interactive, user-requested progress checks. Never run a manual poll loop in the current turn.\n- If the current host has no heartbeat automation support, do not claim an automatic next check. Report the job ID, run name, output directory, and the command needed to check `download-status`.\n- If detached download needs to be restarted, re-run `boltz-api download-results` with the same `--name \"\u003Crun-name>\"` and the same `--root-dir`.\n- Only add `rules` on explicit user request.\n\n## Escape Hatch\n\n- Payload reference: \u003Chttps:\u002F\u002Fapi.boltz.bio\u002Fdocs\u002Fapi\u002Fresources\u002Fprotein\u002Fsubresources\u002Fdesign\u002Fmethods\u002Fstart\u002F>\n- CLI flag names: `boltz-api protein:design start --help`\n\nRead [references\u002Fapi.md](references\u002Fapi.md) for all `binder_specification` variants, motif shapes, sequence DSL, rules, modalities, and `target` variants. Read [references\u002Fresults.md](references\u002Fresults.md) after download when ranking designed binders or explaining outputs.\n\n## Outputs\n\nRank from `results\u002Findex.jsonl` after `download-results`; use [references\u002Fresults.md](references\u002Fresults.md) for local file layout, metric meanings, and the designed-binder entity type gotcha.\n",{"name":5,"description":7},"main","49002d2ddc1f123a8d1148f6c6d73d7b385bb0b1","plugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design",6,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer","https:\u002F\u002Fstigmer.ai","https:\u002F\u002Fgithub.com\u002Fstigmer","The open-source backend for the agents in your product.","2026-11-10 20:10:57",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add stigmer\u002Fstigmer --skill boltz-protein-design",{"tool":52,"command":53},"bunx","bunx skills add stigmer\u002Fstigmer --skill boltz-protein-design",{"tool":55,"command":56},"pnpm","pnpm dlx skills add stigmer\u002Fstigmer --skill boltz-protein-design","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002FSKILL.md",true,[60,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,200,204,208,212,216,220],{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"agents\u002Fopenai.yaml","REFERENCE","参考文档",223,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Fagents\u002Fopenai.yaml",{"path":67,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fapi.md",12304,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Freferences\u002Fapi.md",{"path":71,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Flark-minutes-apply-permission.md",4611,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-apply-permission.md",{"path":75,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Flark-minutes-detail.md",2654,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-detail.md",{"path":79,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Flark-minutes-download.md",5973,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-download.md",{"path":83,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Flark-minutes-search.md",10152,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-search.md",{"path":87,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Flark-minutes-speaker-replace.md",4758,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-speaker-replace.md",{"path":91,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Flark-minutes-summary.md",4428,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-summary.md",{"path":95,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Flark-minutes-todo.md",8177,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-todo.md",{"path":99,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Flark-minutes-update.md",980,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-update.md",{"path":103,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Flark-minutes-upload.md",2828,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-minutes-upload.md",{"path":107,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Flark-note-detail.md",739,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-note-detail.md",{"path":111,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":112,"sourceHtmlUrl":113},"references\u002Flark-note-transcript.md",1061,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-note-transcript.md",{"path":115,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":116,"sourceHtmlUrl":117},"references\u002Flark-vc-agent-meeting-end.md",959,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-agent-meeting-end.md",{"path":119,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":120,"sourceHtmlUrl":121},"references\u002Flark-vc-agent-meeting-invite.md",2290,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-agent-meeting-invite.md",{"path":123,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":124,"sourceHtmlUrl":125},"references\u002Flark-vc-agent-meeting-join.md",6318,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-agent-meeting-join.md",{"path":127,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":128,"sourceHtmlUrl":129},"references\u002Flark-vc-agent-meeting-leave.md",3404,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-agent-meeting-leave.md",{"path":131,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":132,"sourceHtmlUrl":133},"references\u002Flark-vc-detail.md",1112,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-detail.md",{"path":135,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":136,"sourceHtmlUrl":137},"references\u002Flark-vc-meeting-countdown.md",3792,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-meeting-countdown.md",{"path":139,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":140,"sourceHtmlUrl":141},"references\u002Flark-vc-meeting-events.md",26435,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-meeting-events.md",{"path":143,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":144,"sourceHtmlUrl":145},"references\u002Flark-vc-meeting-list-active.md",4054,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-meeting-list-active.md",{"path":147,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":148,"sourceHtmlUrl":149},"references\u002Flark-vc-meeting-message-send.md",6275,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-meeting-message-send.md",{"path":151,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":152,"sourceHtmlUrl":153},"references\u002Flark-vc-meeting-screenshot.md",1731,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-meeting-screenshot.md",{"path":155,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":156,"sourceHtmlUrl":157},"references\u002Flark-vc-recording.md",4135,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-recording.md",{"path":159,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":160,"sourceHtmlUrl":161},"references\u002Flark-vc-search.md",7687,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Freferences\u002Flark-vc-search.md",{"path":163,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":164,"sourceHtmlUrl":165},"references\u002Fresults.md",1079,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Freferences\u002Fresults.md",{"path":167,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":168,"sourceHtmlUrl":169},"references\u002Ftarget-exploration.md",16516,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Freferences\u002Ftarget-exploration.md",{"path":171,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":172,"sourceHtmlUrl":173},"scenes\u002Fcreate-and-edit-minutes.md",10797,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Fscenes\u002Fcreate-and-edit-minutes.md",{"path":175,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":176,"sourceHtmlUrl":177},"scenes\u002Flive-meeting-attend.md",8676,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Fscenes\u002Flive-meeting-attend.md",{"path":179,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":180,"sourceHtmlUrl":181},"scenes\u002Flive-meeting-interact.md",6621,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Fscenes\u002Flive-meeting-interact.md",{"path":183,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":184,"sourceHtmlUrl":185},"scenes\u002Fquery-meeting-and-artifacts.md",7019,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Fscenes\u002Fquery-meeting-and-artifacts.md",{"path":187,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":188,"sourceHtmlUrl":189},"scenes\u002Fquery-minutes-and-artifacts.md",4191,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Fscenes\u002Fquery-minutes-and-artifacts.md",{"path":191,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":192,"sourceHtmlUrl":193},"scenes\u002Fquery-note-and-artifacts.md",6735,"https:\u002F\u002Fgithub.com\u002Flarksuite\u002Fcli\u002Fblob\u002Fmain\u002Fskills\u002Flark-meeting\u002Fscenes\u002Fquery-note-and-artifacts.md",{"path":195,"resourceType":196,"resourceTypeDesc":197,"sizeBytes":198,"sourceHtmlUrl":199},"scripts\u002F_common.py","SCRIPT","脚本",2807,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Fscripts\u002F_common.py",{"path":201,"resourceType":196,"resourceTypeDesc":197,"sizeBytes":202,"sourceHtmlUrl":203},"scripts\u002Fanalyze_results.py",2481,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Fscripts\u002Fanalyze_results.py",{"path":205,"resourceType":196,"resourceTypeDesc":197,"sizeBytes":206,"sourceHtmlUrl":207},"scripts\u002Fcrop_radius.py",2857,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Fscripts\u002Fcrop_radius.py",{"path":209,"resourceType":196,"resourceTypeDesc":197,"sizeBytes":210,"sourceHtmlUrl":211},"scripts\u002Fdetect_disorder.py",3268,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Fscripts\u002Fdetect_disorder.py",{"path":213,"resourceType":196,"resourceTypeDesc":197,"sizeBytes":214,"sourceHtmlUrl":215},"scripts\u002Frequirements.txt",227,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Fscripts\u002Frequirements.txt",{"path":217,"resourceType":196,"resourceTypeDesc":197,"sizeBytes":218,"sourceHtmlUrl":219},"scripts\u002Fscan_sites.py",6488,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Fscripts\u002Fscan_sites.py",{"path":221,"resourceType":196,"resourceTypeDesc":197,"sizeBytes":222,"sourceHtmlUrl":223},"scripts\u002Fterminus.py",1629,"https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Fplugins\u002Fboltz-api-cli\u002Fskills\u002Fboltz-protein-design\u002Fscripts\u002Fterminus.py",[225,251,271,289,303,319],{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":240,"publishedAt":32},"01M6CCSERKR4YRSZJ2TB6B0X60","writing-hookify-rules","This skill should be used when the user asks to \"create a hookify rule\", \"write a hook rule\", \"configure hookify\", \"add a hookify rule\", or needs guidance on hookify rule syntax and patterns.","https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Ftest\u002Fsupport\u002Ffixtures\u002Fclaude-plugins\u002Fhookify\u002Fskills\u002Fwriting-rules\u002FSKILL.md",[231,234,237],{"categoryNo":232,"categoryName":233,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":235,"categoryName":236,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":238,"categoryName":239,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者",[241,242,243,244,245,246,247,248,249,250],"writing","Writing Hookify Rules","Rules","hookify rules","create","guidance","user","write","configure","syntax",{"skillNo":252,"name":253,"nameZh":6,"description":254,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":255,"categories":256,"keywords":263,"publishedAt":32},"01M6CCSC63RKCGC2S1EZDEMXZE","sql-migrations","Write safe database schema migrations - reversible steps, online index builds, and backfills in batches.","https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Ftest\u002Fconformance\u002Ffixtures\u002Fworking-agent\u002Fskills\u002Fsql-migrations\u002FSKILL.md",[257,260],{"categoryNo":258,"categoryName":259,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":261,"categoryName":262,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师",[264,265,266,267,248,268,269,270],"sql","sql migrations","migrations","schema","index","database","safe",{"skillNo":272,"name":273,"nameZh":6,"description":274,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":275,"categories":276,"keywords":277,"publishedAt":32},"01M6CCS9Q8E0R3TYHPZHCPN0JZ","repo-conventions","How to change Go code in this repository - error wrapping, table-driven tests, doc comments, no new dependencies, and running go test before finishing.","https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Ftest\u002Fconformance\u002Ffixtures\u002Fworking-agent\u002Fskills\u002Frepo-conventions\u002FSKILL.md",[],[278,279,280,281,282,283,284,285,286,287,288],"repo","repo conventions","table","go","test","change","doc comments","code","repository","doc","how",{"skillNo":290,"name":291,"nameZh":6,"description":292,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":293,"categories":294,"keywords":295,"publishedAt":32},"01M6CCS7F2D1YZ9H3N63XTEV09","incident-postmortem","Write a blameless incident postmortem - timeline, impact, root cause, contributing factors and follow-up actions with owners.","https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Ftest\u002Fconformance\u002Ffixtures\u002Fworking-agent\u002Fskills\u002Fincident-postmortem\u002FSKILL.md",[],[296,297,248,298,299,300,301,302],"incident postmortem","postmortem","contributing","actions","timeline","owners","up",{"skillNo":304,"name":305,"nameZh":6,"description":306,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":307,"categories":308,"keywords":313,"publishedAt":32},"01M6CCS4W1D2K257KHC40HS8JG","data-analysis","Summarise a data export or table - lead with the key finding and give every number its baseline or comparison.","https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Ftest\u002Fconformance\u002Ffixtures\u002Fworking-agent\u002Fskills\u002Fdata-analysis\u002FSKILL.md",[309,312],{"categoryNo":310,"categoryName":311,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":261,"categoryName":262,"taxonomyType":26,"taxonomyTypeDesc":27},[314,315,316,317,280,318],"analysis","data analysis","data","baseline","export",{"skillNo":320,"name":321,"nameZh":6,"description":322,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":323,"categories":324,"keywords":325,"publishedAt":32},"01M6CCS2MNQYK9S24AYHJAVPWF","customer-support","Answer customer questions about orders, returns and refunds from the written policies and the order system, ending with a clear next step.","https:\u002F\u002Fgithub.com\u002Fstigmer\u002Fstigmer\u002Fblob\u002Fmain\u002Ftest\u002Fconformance\u002Ffixtures\u002Fworking-agent\u002Fskills\u002Fcustomer-support\u002FSKILL.md",[],[326,327,328,329,330,331],"support","customer","customer support","system","refunds","returns"]