论文设计
- 作者仓库星标 80
- 作者更新于 实时读取
- 作者仓库 blatant-why
- 领域
- 通用
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 92 / 100 · 已通过审计
- 作者 / 版本 / 许可
- @001TMF · v1.0 · 未声明 license
- Token 消耗评级
- 中等消耗
- 接入复杂程度
- 需简单配置
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- macOS · Linux · Windows
- 底层运行要求
- Node.js · Python
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- 网络行为
- 仅限本地
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: by-display
description: Standard display formats for all campaign output. They use Unicode box-drawing characters and ma…
category: 通用
runtime: Node.js / Python
---
# by-display 输出预览
## PART A: 任务判断
- 适用问题:通用任务拆解、检查和交付。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“When to Use This Skill / Inputs / Outputs”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于通用任务拆解、检查和交付,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“When to Use This Skill / Inputs / Outputs”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、主要在本地完成、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文出现了 `/by`、`/clear`、`/home` 这类斜杠命令;如果你的 Agent 支持命令触发,优先用命令开场,再补充目标和边界。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件。
先用一个小任务确认它会围绕“When to Use This Skill / Inputs / Outputs”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: by-display
description: Standard display formats for all campaign output. They use Unicode box-drawing characters and ma…
category: 通用
source: 001TMF/blatant-why
---
# by-display
## 什么时候使用
- by-display 是一个通用扩展技能,按 SKILL 适合处理通用任务拆解、检查、交付和复盘,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执行、可检查、可继续迭代的步骤;通常不需要…
- 面向通用任务拆解、检查和交付,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「When to Use This Skill / Inputs / Outputs」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "by-display" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> When to Use This Skill / Inputs / Outputs
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> Node.js / Python | 读取文件、写入/修改文件 | 主要在本地完成
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} BY Display Patterns
Standard display formats for all campaign output. They use Unicode box-drawing characters and markdown that render natively in Claude Code's terminal. Never use ANSI escape codes in response text — they render as literal characters.
Every other BY skill (research, screening, scoring, campaign-manager, ...) calls
into these templates when it is time to talk to the user. This file is the
canonical source; the literal templates live in
references/output-format-spec.md so other
skills can copy them verbatim.
When to Use This Skill
Use this skill when you are:
- ✅ Rendering campaign status for
/by:status,/by:watch, or phase transitions - ✅ Formatting screening reports (liabilities, developability, structure scores)
- ✅ Showing ranked results for
/by:resultsor any final campaign output - ✅ Displaying errors or quota warnings that need user attention
- ✅ Presenting a checkpoint or safety gate that requires explicit user approval
- ✅ Streaming progress during long-running design/fold jobs
- ✅ Closing a phase — every major phase ends with a "Next Up" block
Do NOT use this skill when:
- ❌ You need to compute scores — that is
by-scoring; this skill only renders them - ❌ You need to run a screening battery — that is
by-screening - ❌ You need to decide what to do next — that is
by-campaign-manager/by-design-workflow - ❌ You need raw machine-readable JSON output for another tool — emit JSON directly, not the human-facing templates here
- ❌ You want to invent a new visual style — extend the templates here instead of forking them
Inputs
This skill is consumed by other skills. Inputs are the data objects to be rendered:
Required (one of):
- Campaign checkpoint object —
{ campaign_id, target, phases: [{name, status, time, details}, ...], current_phase }. Source:by-campaign-manager(campaign_state.json). - Ranked design list —
[{ design_id, composite, ipSAE, ipTM, pLDDT, liabilities, verdict }, ...]. Source:by-scoring/by-screening. - Screening report object —
{ design_id, liabilities: {...}, developability: {...}, structure: {...}, verdict }. Source:by-screening. - Progress event —
{ phase, status (◆/✓/✗), message, elapsed }. Source: any long-running skill. - Error object —
{ title, details, suggested_next }.
Optional:
- Score scale overrides — non-default thresholds for the
EXCELLENT/STRONG/...labels on score bars (seereferences/output-format-spec.md§Score Bars). - Provider context —
{ provider, tool, protocol, scaffold, budget }shown in design-launch banners.
Outputs
Markdown strings printed to the terminal. No files written by this skill itself.
| Output | When | Template ID |
|---|---|---|
| Campaign status banner | /by:status, phase transitions |
banner.campaign-status |
| Progress-during-design line | /by:watch, mid-pipeline |
progress.design |
| Ranked results table | /by:results, campaign close |
table.ranked-results |
| Screening battery report | /by:screen, per-design report |
report.screening |
| Score bar | Any 0-1 metric display | bar.score |
| Error box | Quota / failure / warning | box.error |
| Checkpoint box | Lab gate, approval gate | box.checkpoint |
| Next-Up block | End of every major phase | block.next-up |
| Long-running job submission | SSH / Tamarind dispatch | block.job-submitted |
| Batch progress | Multi-job tracking | block.batch-progress |
| Pipeline summary table | Campaign complete | table.pipeline-summary |
| Inline progress (✓/◆/✗) | Between phases | inline.progress |
For the literal Unicode/ASCII templates, see
references/output-format-spec.md.
Clarification Questions
⚠️ CRITICAL: ASK THIS FIRST — confirm there is something to render before invoking this skill.
- What are you trying to render? (ASK THIS FIRST) — A campaign status, a ranked results table, a screening report, an error, or a checkpoint? Each maps to a different template. Without this, do not generate any output.
- Which data object do you have? — Pass the campaign checkpoint, the ranked design list, or the screening report object. The skill cannot make up values; if a field is missing, leave it blank or mark
—(em-dash). - What is the audience? — User-facing terminal output (this skill) vs. machine-readable JSON for another tool (do NOT use this skill).
- Is this an end-of-phase rendering? — If yes, append the Next-Up block. If mid-phase, use the inline
◆/✓progress format instead. - Are there units to clarify? — pLDDT is 0-100 (divide by 100 for the score bar); ipSAE and ipTM are 0-1 (use directly). RMSD is in Å, lower is better.
- Is a safety gate involved? — If lab submission or any irreversible action is next, use the checkpoint box and require explicit user approval. Never auto-proceed past a checkpoint.
- Provider context available? — Local GPU / HPC / Tamarind affects what shows in the design-launch banner. If unknown, fall back to "compute provider: see
.by/config.json".
Standard Workflow
🚨 MANDATORY: COPY TEMPLATES FROM references/output-format-spec.md VERBATIM — DO NOT IMPROVISE LAYOUT 🚨
- Identify the render type. Match the data object to one of the templates above.
- Load the template from
references/output-format-spec.md. - Fill the slots with values from the input object. Use
—(em-dash) for missing values; never invent numbers. - Pick the right status symbol from the table below.
- Render the score bars at 10-block resolution. Round the filled count to the nearest integer; for ambiguous cases below 0.9, prefer the conservative (lower) count.
- Append the Next-Up block if this is the end of a major phase.
Anti-patterns:
- ❌ Writing ANSI escape codes (
\033[...) in response text → they render literally in Claude Code chat - ❌ Varying the banner width — always 53
━characters - ❌ Using
GSD ►or any prefix other thanBY ► - ❌ Reprinting the full phase table on every progress update — use inline
◆/✓lines, print the summary table ONCE at the end - ❌ Showing raw JSON from MCP tools — always parse and present clean summaries
- ❌ Exposing API keys, tokens, or secrets in any rendered output
Status Symbols
✓ Complete / Passed / Verified
✗ Failed / Missing / Blocked
◆ In Progress / Active
○ Pending
⚠ Warning
Use ONLY these symbols. Random emoji break skimmability.
Campaign Status Banner
Use for /by:status and phase transitions.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
BY ► CAMPAIGN: {campaign_name}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Phase | Status | Time | Details |
|----------|------------|--------|----------------------|
| Research | ✓ Complete | 45s | 3 PDB, 12 prior art |
| Plan | ✓ Complete | 30s | Preview tier, 10 VHH |
| Design | ◆ Active | 1m 15s | 5/10 designs |
| Screen | ○ Pending | — | |
| Rank | ○ Pending | — | |
A drop-in CLI renderer is provided at scripts/render_campaign_status.py:
python3 scripts/render_campaign_status.py \
--checkpoint campaigns/anti-HER2/campaign_20260520_001/campaign_state.json
Progress During Design
Use for /by:watch and mid-pipeline updates.
BY ► DESIGNING ████████░░ 80% (8/10 designs)
Provider: Local GPU (RTX 6000)
Tool: BoltzGen | Protocol: nanobody-anything
Scaffold: caplacizumab | Budget: 10
Progress bar: 10 blocks total. █ (U+2588) for filled, ░ (U+2591) for empty.
Fill proportionally to percent complete.
Ranked Results Table
Use for /by:results and final campaign output.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
BY ► RESULTS: {campaign_name} — {N} candidates ranked
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Design Composite ipSAE ipTM pLDDT Liabilities Verdict
─── ──────────── ────────── ─────── ────── ────── ───────────── ──────────
1 design_003 0.871 0.85 0.82 91.2 0 crit ✓ LAB-READY
2 design_007 0.823 0.80 0.79 88.5 1 warn ✓ LAB-READY
3 design_001 0.756 0.72 0.75 85.1 0 crit ◆ FOLLOW-UP
4 design_012 0.534 0.45 0.62 78.3 2 crit ✗ NOT VIABLE
## Score Context
ipSAE 0.85 ████████░░ EXCELLENT (top 5% of approved therapeutics)
ipTM 0.82 ████████░░ STRONG (confident interface prediction)
pLDDT 91.2 █████████░ VERY HIGH (reliable fold prediction)
## Summary
✓ 2 lab-ready candidates | ◆ 1 needs follow-up | ✗ 1 not viable
## Next Steps
1. Submit top 2 to Adaptyv Bio ($119-215/design)
2. Run follow-up campaign with increased budget for design_001
3. Consider alternative epitope for design_012
Screening Battery Display
Use for /by:screen and per-design screening reports.
BY ► SCREENING {design_id}
Liabilities:
✓ Deamidation 0 sites
✓ Isomerization 0 sites
✓ Oxidation 0 sites (no exposed Met)
✓ Free Cys 0 unpaired
✓ Glycosylation 0 NXS/T motifs
Developability:
Charge pH 7.4 +2.1 ✓ normal range
Hydrophobic 34% ✓ below 45% threshold
CDR3 length 12 aa ✓ within range
Structure:
ipSAE 0.85 ████████░░ EXCELLENT
ipTM 0.82 ████████░░ STRONG
pLDDT 91.2 █████████░ VERY HIGH
RMSD 1.2A ██░░░░░░░░ GOOD
VERDICT: ✓ PASS — composite score 0.871
Score Bar Format
For any metric on a 0-1 scale (or 0-100 normalized to 0-1):
{metric} {value} {bar} {label}
Where bar = 10 blocks, filled proportionally: ████████░░ for 0.80.
Scale: each █ represents 10%. Round to nearest block. Examples:
- 0.85 =
████████░░(8.5 rounds to 9, but display 8 for conservatism below 0.9) - 0.92 =
█████████░ - 0.50 =
█████░░░░░ - 0.12 =
█░░░░░░░░░
For pLDDT (0-100 scale), divide by 100 first: pLDDT 91.2 = 0.912 = █████████░.
Canonical thresholds and labels for ipSAE / ipTM / pLDDT / RMSD live in
references/output-format-spec.md §Score Bars.
Error Display
Use for warnings, quota exhaustion, and failures.
╔══════════════════════════════════════════════════════╗
║ ⚠ {Error title} ║
╠══════════════════════════════════════════════════════╣
║ ║
║ {Details and alternatives} ║
║ ║
╚══════════════════════════════════════════════════════╝
Checkpoint / Safety Gate
Use for lab submission gates and user approval points.
╔══════════════════════════════════════════════════════╗
║ CHECKPOINT: {Type} ║
╚══════════════════════════════════════════════════════╝
{Content — candidates table, cost estimate, safety gate status}
──────────────────────────────────────────────────────
→ {ACTION PROMPT}
──────────────────────────────────────────────────────
Next Up Block
Always show at the end of major phase completions.
──────────────────────────────────────────────────────
## ▶ Next Up
**{Action}** — {description}
`/by:{command}`
<sub>`/clear` first → fresh context window</sub>
──────────────────────────────────────────────────────
Long-Running Job Display
Use for SSH remote jobs, HPC dispatch, and Tamarind cloud jobs that take minutes to hours.
Fire-and-Forget Pattern
For jobs submitted to remote compute:
BY ► JOB SUBMITTED
Job ID: tmr_abc123
Provider: Local GPU (RTX 6000)
Tool: BoltzGen | Protocol: nanobody-anything
Submitted: 2026-03-25 14:32 UTC
Est. time: ~45 min
Track: /by:watch tmr_abc123
Check: /by:status
SSH Remote Job
BY ► REMOTE JOB
Host: gpu-node.example.com
PID: 12345
Tool: Protenix refolding (20 seeds)
Started: 2026-03-25 14:32 UTC
Output: ~/campaigns/anti-HER2/run_001/protenix_out/
Monitor: ssh gpu-node "tail -f ~/campaigns/.../protenix.log"
Batch Progress
When monitoring a batch of jobs:
BY ► BATCH PROGRESS
████████░░ 80% (8/10 jobs complete)
✓ job_001 design_001 ipTM 0.82 ipSAE 0.79
✓ job_002 design_002 ipTM 0.75 ipSAE 0.71
✓ job_003 design_003 ipTM 0.88 ipSAE 0.85
...
◆ job_009 design_009 running (est. 5 min)
○ job_010 design_010 queued
Inline Progress Updates (preferred over repeated tables)
Claude Code output is append-only — tables cannot be updated in place. Instead, show one-line status updates as each phase completes. Print the full summary table only ONCE at the end.
◆ Structure: querying PDB...
✓ Structure: 10 PDB hits, best 3DPL at 2.6Å (12s)
✓ Sequence: P62877, 108 aa, RING domain (8s)
✓ Prior Art: 0 known binders in SAbDab (15s)
✓ Epitope: 2 druggable surfaces identified (18s)
◆ Synthesizer: compiling report...
✓ Synthesizer: druggability 0.89, de novo recommended (5s)
◆ Design: submitting 1,000 designs to local GPU...
Do NOT reprint the full phase table after every step — it clutters the chat. Use the one-line ✓/◆/✗ format between phases.
Live Progress from Compute Tools
BoltzGen and Protenix output their own progress bars when run via Bash. Claude Code streams Bash output in real-time, so users see live progress:
[Step 1/5] design - Predicting DataLoader 0: : 50%|█████ | 5/10 [00:32<00:32, 0.15it/s]
IMPORTANT: For live progress to work, the design agent MUST run compute tools via the Bash tool (not MCP). MCP tools return results only after completion — no streaming. Bash streams output as it happens.
Pattern for the design agent:
# Run BoltzGen via conda env — output streams live
/home/user/.conda/envs/bg/bin/boltzgen run design_spec.yaml \
--output ./campaign_output \
--num_designs 10 \
--protocol nanobody-anything \
--budget 10
The 5-stage BoltzGen pipeline shows live progress for each step:
design— backbone generation with diffusion progress barinverse_folding— sequence design progress barfolding— Protenix refolding progress baranalysis— metrics computationfiltering— ranking and output
Pipeline Summary Table (show ONCE at end)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
BY ► CAMPAIGN COMPLETE: {target}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Phase | Status | Time | Details |
|-------------|------------|--------|----------------------------------|
| Structure | ✓ Complete | 12s | 10 PDB hits, best 3DPL at 2.6Å |
| Sequence | ✓ Complete | 8s | P62877, 108 aa, RING domain |
| Prior Art | ✓ Complete | 15s | 0 known binders |
| Epitope | ✓ Complete | 18s | 2 druggable surfaces |
| Synthesizer | ✓ Complete | 5s | Druggability 0.89 |
| Design | ✓ Complete | 5m 20s | 1,000 designs, local GPU |
| Screen | ✓ Complete | 45s | 847 pass, 153 fail |
| Verify | ✓ Complete | 10s | 10 candidates verified |
Total: 7m 13s | Provider: Local GPU (RTX 6000)
Conversational Patterns
Target Lookup
Formatted table with Name, UniProt ID, PDB entries, Organism, Length, Function, followed by a recommendation and confirmation prompt.
Interface Analysis
Residue table with classifications (hotspot, contact, peripheral), followed by hotspot list and numbered options for epitope selection.
Design Launch
Parameter table (modality, scaffold, budget, provider, protocol), followed by
monitoring hints (/by:watch, /by:status).
Results
Ranked table (Rank, Design, ipSAE, ipTM, Liabilities, Status), followed by Score Context bars, Summary line, and Next Steps.
When Scripts Fail
This skill ships one script: scripts/render_campaign_status.py. It only depends on
Python stdlib (json, argparse, pathlib). Standard failure hierarchy:
- Fix and Retry (90%) — Wrong checkpoint path, malformed JSON, or missing
phasesarray. Inspect the checkpoint, fix, re-run. - Modify Script (5%) — Add a new column or sparkline variant. Keep the
--checkpointCLI signature stable. - Use as Reference (4%) — If a campaign needs an entirely different layout,
read the script and inline the rendering. Still copy the literal templates
from
references/output-format-spec.md— do not reinvent them. - Write from Scratch (1%) — Only if the checkpoint schema has changed and
the script cannot be repaired. Document why in the campaign's
notes.md.
If you need a template that does not yet exist (e.g., a new "kinetics report"
view), extend references/output-format-spec.md rather than improvising.
Common Issues
| Issue | Cause | Solution | Details |
|---|---|---|---|
ANSI escape codes show as literal \033[31m |
Used terminal color codes in response text | Claude Code does not interpret ANSI in chat — use status symbols (✓ ✗ ◆) and unicode bars only | SKILL.md Anti-Patterns |
Banner width misaligned (some ━ lines longer than others) |
Hand-typed banner lines drifted | Always 53 ━ characters; copy from references/output-format-spec.md §Banners |
references/output-format-spec.md |
| Score bar shows 11 blocks instead of 10 | Off-by-one when filling proportionally | Bar is exactly 10 blocks; use int(round(value * 10)) for fill count, capped at 10 |
references/output-format-spec.md §Score Bars |
| pLDDT score bar shows 0.91 → 9 blocks → label "EXCELLENT" but pLDDT is on 0-100 scale | Forgot to divide pLDDT by 100 before rendering | Divide pLDDT by 100 for the bar; show the raw 0-100 value as the displayed number | SKILL.md Score Bar Format |
| Status table reprinted after every progress event | Treating the table as a live dashboard | Print the summary table ONCE at the end; use inline ◆/✓ lines between phases |
SKILL.md Inline Progress |
| Box-drawing characters look broken (▒▓ instead of ░█) | Font does not support U+2588 / U+2591, or fallback failed | Most modern terminals render these; if user reports breakage, fall back to ASCII # for filled and - for empty |
references/output-format-spec.md §Fallbacks |
| Long-running job displays no progress | Compute tool launched via MCP instead of Bash | MCP returns only on completion; launch BoltzGen/Protenix via the Bash tool so output streams live | SKILL.md Live Progress |
GSD ► prefix appearing instead of BY ► |
Carried over from another agent's display patterns | BY uses BY ► exclusively — search-and-replace any GSD ► occurrences |
SKILL.md Anti-Patterns |
| Raw MCP JSON dumped into chat | Skipped the parse step | Parse the JSON object, render via the appropriate template, never print(json.dumps(...)) to chat |
CLAUDE.md Communication Style |
| API keys / tokens visible in design-launch banner | Provider config printed verbatim | Strip secrets; show only provider name (Local GPU, Tamarind Bio) and tool name |
SKILL.md Anti-Patterns |
| Next-Up block missing after phase completes | Forgot the closing block | Every major phase ends with the Next-Up block (template block.next-up); enforce in skill exit |
SKILL.md Next Up Block |
Em-dash — shown as - or -- |
Wrong character (hyphen / double-hyphen instead of U+2014) | Use the actual em-dash U+2014 for missing values; many editors auto-replace -- → — |
references/output-format-spec.md §Typography |
| Checkpoint box rendered without action prompt | Used the box template but forgot the → {ACTION} footer |
Checkpoint boxes are gated; ALWAYS include the action prompt below the box | SKILL.md Checkpoint |
Best Practices
- 🚨 CRITICAL: Always use
BY ►as the banner prefix. NeverGSD ►or any other variant. - 🚨 CRITICAL: Never emit ANSI escape codes in response text. They render as literal characters in Claude Code chat.
- ✅ REQUIRED: Copy templates verbatim from
references/output-format-spec.md. Do not improvise widths or symbols. - ✅ REQUIRED: Print the full phase summary table ONCE. Between phases, use one-line
◆/✓/✗updates. - ✅ REQUIRED: End every major phase with a Next-Up block. It is the user's hand-off cue.
- ✅ Use the canonical status symbols (✓ ✗ ◆ ○ ⚠) — no random emoji.
- ✅ Divide pLDDT by 100 before computing the score bar fill; show the raw 0-100 value alongside.
- ✅ Stream long-running progress via Bash, not MCP (MCP returns only on completion).
- ❌ Do NOT dump raw MCP JSON into chat — parse and render via a template.
- ❌ Do NOT include API keys, tokens, or full file paths with secrets in any rendered output.
- ✨ Optional: When a new view type emerges (e.g., kinetics, dose-response), add a new template to
references/output-format-spec.mdrather than improvising once.
Suggested Next Steps
This skill is a render layer — every other skill calls into it. After invoking
by-display, the typical continuation depends on the render type:
- After a results table → invoke
by-experiment-results(lab readouts) orby-campaign-optimizer(active-learning round N+1) for what happens next. - After a screening report → invoke
by-failure-diagnosisif anything failed, orby-campaign-managerto advance the campaign state. - After a checkpoint → wait for explicit user approval; on approval, hand back to the calling skill (e.g.,
by-campaign-managerfor lab submission). - After a status banner mid-pipeline → continue the running phase; do not auto-advance.
- After a campaign-complete summary → invoke
by-knowledgeto persist learnings, thenby-campaign-optimizerif iterating.
Related Skills
Upstream (feed data into this skill):
by-campaign-manager— supplies campaign checkpoint objects.by-scoring— supplies composite / ipSAE / ipTM / pLDDT values.by-screening— supplies per-design liability and developability data.by-research— supplies target-lookup data and prior-art counts.
Downstream (consumed by user, not other skills):
- The user reads the rendered output and invokes the next slash command.
Alternative / complementary:
- None — this is the single canonical render layer. If a different style is needed, extend
references/output-format-spec.md.
References
Detailed documentation:
references/output-format-spec.md— canonical Unicode/ASCII templates for every render type listed in Outputs, plus typography rules, fallback policy, and score-bar threshold tables.
Scripts:
scripts/render_campaign_status.py— CLI: reads a campaign checkpoint JSON and prints the formatted banner + phase table + score distribution sparkline + recent events.
External references:
- Unicode box-drawing block: https://www.unicode.org/charts/PDF/U2500.pdf
- Unicode block elements (▀ ▌ █ ░ ▒ ▓): https://www.unicode.org/charts/PDF/U2580.pdf
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核