ワンクリックで
linkml-schema
Generate LinkML schema YAML from markdown, Excel, or text descriptions. Scaffold a LinkML project repo and push to GitHub.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Generate LinkML schema YAML from markdown, Excel, or text descriptions. Scaffold a LinkML project repo and push to GitHub.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Run an independent AI review of a project or research plan. Use when you want feedback without the full /submit checklist.
Approve a project and upload it to the lakehouse. Use when the author is ready to stand behind the report and submit the project for archival.
Read analysis outputs, compare against literature, and draft findings for a project REPORT.md. Use when notebooks have been run and the user wants to interpret results and write up findings.
Get started with the BERIL Research Observatory. Use when a user is new, wants orientation, or asks what they can do.
Run arbitrary scripts on KBase compute nodes via the CDM Task Service (CTS). Use when the user needs to move compute off their notebook or local machine — e.g., running bioinformatics tools, heavy data processing, or anything that benefits from dedicated CPU/memory on a remote node.
Use when searching BERIL project/docs context through OpenViking or refreshing the indexed context layer before research, synthesis, or pitfall work.
| name | linkml-schema |
| description | Generate LinkML schema YAML from markdown, Excel, or text descriptions. Scaffold a LinkML project repo and push to GitHub. |
| allowed-tools | Bash, Read, Write, Edit, AskUserQuestion |
| user-invocable | true |
Convert informal data descriptions (markdown tables, Excel spreadsheets, plain text) into formal LinkML schema YAML. Optionally scaffold a full LinkML project repo and push it to GitHub.
Execute phases sequentially. Phases 4 and 5 are optional — offer them after Phase 3 succeeds.
python3 is available (command -v python3). If missing, stop and report.linkml and openpyxl Python packages:
python3 -c "import linkml" 2>/dev/null && echo "linkml OK" || echo "linkml MISSING"
python3 -c "import openpyxl" 2>/dev/null && echo "openpyxl OK" || echo "openpyxl MISSING"
$VIRTUAL_ENV is set), use pip install <pkg>.pip install --user <pkg>.linkml (provides linkml-validate CLI), openpyxl (Excel reading).copier or gh yet — only check those lazily in Phases 4/5.Read reference files first:
references/linkml-cheatsheet.md for schema syntax.references/type-mapping.md for type inference rules.Identify inputs — ask the user or detect from context. Supported formats:
.md): Extract classes from ## headers, slots from table rows or bullet lists, relationships from cross-references, enums from value lists..xlsx): Use inline Python with openpyxl to read the workbook:
import openpyxl, json
wb = openpyxl.load_workbook("INPUT.xlsx", data_only=True)
result = {}
for sheet in wb.sheetnames:
ws = wb[sheet]
headers = [c.value for c in ws[1] if c.value]
rows = []
for row in ws.iter_rows(min_row=2, max_col=len(headers), values_only=True):
rows.append(list(row))
result[sheet] = {"headers": headers, "sample_rows": rows[:20]}
print(json.dumps(result, indent=2, default=str))
references/type-mapping.md.id or *_id column + all unique values).*_id columns whose name matches another sheet).Merge inputs when multiple files are provided. Prefer Excel-inferred types over markdown/text guesses. Deduplicate classes by name similarity.
Interactive review via AskUserQuestion:
Build the schema YAML using Python to ensure correct formatting:
import yaml
schema = {
"id": f"https://w3id.org/{schema_name}",
"name": schema_name,
"prefixes": {
"linkml": "https://w3id.org/linkml/",
schema_name: f"https://w3id.org/{schema_name}/",
},
"imports": ["linkml:types"],
"default_range": "string",
"classes": { ... },
"enums": { ... },
}
with open(output_path, "w") as f:
yaml.dump(schema, f, default_flow_style=False, sort_keys=False, allow_unicode=True)
Naming conventions:
snake_caseCamelCasesnake_caseCamelCaseEnum (e.g., SampleTypeEnum)snake_caseValidate the generated schema:
linkml-validate -s SCHEMA.yaml
imports, wrong range names, duplicate slot definitions.Present results to the user:
AskUserQuestion: "What would you like to do next?"
references/copier-template-guide.md.copier if missing:
python3 -c "import copier" 2>/dev/null || pip install copier
AskUserQuestion:
copier copy --trust \
--data project_name=NAME \
--data github_org=ORG \
--data full_name="AUTHOR" \
--data license=LICENSE \
gh:linkml/linkml-project-copier ./PROJECT_DIR
src/{project_name}/schema/{schema_name}.yaml.cd PROJECT_DIR && linkml-validate -s src/*/schema/*.yaml
PROJECT_DIR/
├── src/{project_name}/schema/{schema_name}.yaml
├── project/
│ └── .gitkeep
├── pyproject.toml (minimal LinkML project config)
└── Makefile (gen-project, test, lint targets)
Check gh is installed and authenticated:
command -v gh && gh auth status
If not authenticated, stop and tell the user to run gh auth login.
Ask via AskUserQuestion:
Create repo and push:
cd PROJECT_DIR
gh repo create ORG/REPO --VISIBILITY --source=. --remote=origin
git init
git add .
git commit -m "Initial LinkML schema: SCHEMA_NAME"
git branch -M main
git push -u origin main
Report final URL and next steps:
make setup — install project dependenciesmake gen-project — generate Python dataclasses, JSON-Schema, etc.make test — run schema testsmake gen-doc — generate documentation site| Tier | Examples | Action |
|---|---|---|
| Blocking | python3 missing, input file not found, gh not authenticated | Stop and report clearly |
| Recoverable | pip package missing, YAML validation error, copier failure | Auto-fix / retry up to 3 times, then fallback |
| Ambiguous | Unclear class names, type ambiguity, naming conflicts | Ask user via AskUserQuestion |
--trust with copier only after confirming the template source with the user.