Evolving The Data Model
TriliumNext/Trilium
A skill your agent uses when adding a DB migration or a new column/field to a Becca entity in Trilium ("add a migration", "new column on notes/attributes", "ALTER TABLE", "add a field to…
Agent skill
by yangtaihong59 in yangtaihong59/siyuan-plugins-mcp-sisyphus
CLI-only staged playbook for Markdown and external database migration with explicit targets, mappings, bounded writes, and layered readback.
$ npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install yangtaihong59/siyuan-plugins-mcp-sisyphus siyuan-sisyphus-import-migration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration .claude/skills/siyuan-sisyphus-import-migration && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "siyuan-sisyphus-import-migration" agent skill from https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus/tree/main/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration into .claude/skills/siyuan-sisyphus-import-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "siyuan-sisyphus-import-migration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus/tree/main/skills/siyuan-sisyphus/siyuan-sisyphus-import-migrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install yangtaihong59/siyuan-plugins-mcp-sisyphus siyuan-sisyphus-import-migration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration .agents/skills/siyuan-sisyphus-import-migration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "siyuan-sisyphus-import-migration" agent skill from https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus/tree/main/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration into .agents/skills/siyuan-sisyphus-import-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "siyuan-sisyphus-import-migration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install yangtaihong59/siyuan-plugins-mcp-sisyphus siyuan-sisyphus-import-migration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration .cursor/skills/siyuan-sisyphus-import-migration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "siyuan-sisyphus-import-migration" agent skill from https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus/tree/main/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration into .cursor/skills/siyuan-sisyphus-import-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "siyuan-sisyphus-import-migration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus.git --path skills/siyuan-sisyphus/siyuan-sisyphus-import-migration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install yangtaihong59/siyuan-plugins-mcp-sisyphus siyuan-sisyphus-import-migration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration .gemini/skills/siyuan-sisyphus-import-migration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "siyuan-sisyphus-import-migration" agent skill from https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus/tree/main/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration into .gemini/skills/siyuan-sisyphus-import-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "siyuan-sisyphus-import-migration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install yangtaihong59/siyuan-plugins-mcp-sisyphus siyuan-sisyphus-import-migrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration .github/skills/siyuan-sisyphus-import-migration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "siyuan-sisyphus-import-migration" agent skill from https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus/tree/main/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration into .github/skills/siyuan-sisyphus-import-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "siyuan-sisyphus-import-migration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install yangtaihong59/siyuan-plugins-mcp-sisyphus siyuan-sisyphus-import-migration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration .opencode/skills/siyuan-sisyphus-import-migration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "siyuan-sisyphus-import-migration" agent skill from https://github.com/yangtaihong59/siyuan-plugins-mcp-sisyphus/tree/main/skills/siyuan-sisyphus/siyuan-sisyphus-import-migration into .opencode/skills/siyuan-sisyphus-import-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "siyuan-sisyphus-import-migration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
siyuan-sisyphus-import-migrationCLI-only staged playbook for Markdown and external database migration with explicit targets, mappings, bounded writes, and layered readback.
Siyuan Sisyphus Import Migration is an agent skill from yangtaihong59/siyuan-plugins-mcp-sisyphus. CLI-only staged playbook for Markdown and external database migration with explicit targets, mappings, bounded writes, and layered readback.
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Databases, covering Database migrations. The repository describes itself as: 一个用于连接Agent与Siyuan的工具. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d2ad534. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Siyuan Sisyphus Import Migration loads about 1.8k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 467 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from yangtaihong59/siyuan-plugins-mcp-sisyphus at commit d2ad534, republished under its MIT licence (© yangtaihong59). 467 words, ~1,795 tokens.
.claude/skills/siyuan-sisyphus-import-migration/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use this scenario for caller-preprocessed Markdown or external database/template migration. It does not parse arbitrary local files, promise NodeCallout conversion, read exact .sy files, preserve source IDs, decrypt notebooks, or perform browser UI acceptance.
Record source descriptor/hash, target notebook/path, scope, conflict policy, business-profile boundary, recoverable safety net, one-writer state, confirmation, and the three acceptance gates before W3 writes.
siyuan-sisyphus system get-version --jsonsiyuan-sisyphus notebook list --jsonsiyuan-sisyphus notebook get-permissions --jsonsiyuan-sisyphus system conf --mode 'summary' --jsonsiyuan-sisyphus fs tree --path '<target-workspace-path>' --max-depth '4' --jsonStop on an ambiguous target, missing authorization or safety net, multiple writers, unresolved business rules, or a direct .sy/encrypted request. Titles, labels, search hits, and UI positions are discovery hints, never foreign keys.
The caller or a separately reviewed preprocessor supplies preprocessed Markdown, source hash, transform report, ordered image refs, stable wikilink map, and unresolved diagnostics. It removes YAML frontmatter and normalizes supported image/callout/list syntax without inventing IDs or silently dropping values.
siyuan-sisyphus fs read --path '<staged-workspace-document>' --block-start '0' --block-limit '50' --token-budget '2000' --include-block-ids --jsonsiyuan-sisyphus fs search --path '<staged-workspace-root>' --query '<source-keyword>' --page '1' --page-size '20' --jsonsiyuan-sisyphus file list-templates --query '<template-keyword>' --page '1' --page-size '20' --jsonsiyuan-sisyphus file read-template --path '<resolved-template-path>' --offset '0' --limit '8000' --jsonfs.read reads a SiYuan workspace path, not an arbitrary local file. Unsupported syntax, path escape, unmapped dot-prefixed image, or unresolved wikilink blocks apply until the caller supplies a policy.
Resolve exact notebook, parent path, existing targets, and dependencies before writing. Persist one mapping-ledger row per source document/block/asset/AV/field/row/view/template with stable source key, actual target ID/path, status, normalization, and readback evidence.
siyuan-sisyphus document lookup --notebook '<notebook-id>' --hpath '<target-parent-hpath>' --include-json '["id","path","hpath","docInfo"]' --jsonsiyuan-sisyphus document create --notebook '<notebook-id>' --path '<target-document-path>' --markdown '<preprocessed-markdown>' --jsonsiyuan-sisyphus document lookup --id '<returned-document-id>' --include-json '["id","path","hpath","docInfo"]' --jsonsiyuan-sisyphus file upload-asset --assets-dir-path '<approved-assets-dir>' --local-file-path '<approved-staged-file>' --jsonsiyuan-sisyphus av get --av-id '<av-id>' --block-id '<database-block-id>' --jsonsiyuan-sisyphus av get-attribute-view-keys --av-id '<av-id>' --jsonCreate missing documents only after approval. Generated target IDs are recorded; this action set cannot preserve source IDs or force remapping. On lost acknowledgement, perform one identity-fixed read and classify the outcome; never resend blindly.
Apply a reviewed manifest incrementally under one writer and dependency order. Prefer explicit document.create, additive block.append/insert, scoped block.update, and typed AV actions. Do not root-overwrite documents containing AV, mirrors, super blocks, HTML, media, or other complex native blocks without a separate contract.
siyuan-sisyphus block append --parent-id '<resolved-parent-id>' --data-type 'markdown' --data '<one-reviewed-block>' --jsonsiyuan-sisyphus block insert --blocks-json '[{"previousID":"<resolved-previous-id>","dataType":"markdown","data":"<one-reviewed-block>"}]' --jsonsiyuan-sisyphus block update --items-json '[{"id":"<reviewed-leaf-block-id>","dataType":"markdown","data":"<replacement-block-content>"}]' --jsonsiyuan-sisyphus block set-attrs --id '<reviewed-block-id>' --attrs-json '{"custom-source-key":"<stable-source-key>"}' --jsonsiyuan-sisyphus av add-rows --av-id '<av-id>' --block-ids-json '["<bound-document-block-id>"]' --view-id '<view-id>' --jsonsiyuan-sisyphus av set-cells --av-id '<av-id>' --cells-json '[{"rowID":"<row-item-id>","columnID":"<column-key-id>","valueType":"text","text":"<typed-value>"}]' --jsonAsset upload is an explicit approved local-file operation; use only the returned asset path. It is not a recursive importer. HTTP success remains provisional until exact readback.
Read stable IDs and continue every advertised window/page before search or UI observations.
siyuan-sisyphus document get-doc --id '<returned-document-id>' --mode 'markdown' --block-start '0' --block-limit '50' --token-budget '2000' --include-block-ids --jsonsiyuan-sisyphus block get-kramdown --id '<written-block-id>' --jsonsiyuan-sisyphus block get-children --id '<resolved-parent-id>' --page '1' --page-size '200' --jsonsiyuan-sisyphus block dom --id '<written-block-id>' --jsonsiyuan-sisyphus block get-attrs --id '<reviewed-block-id>' --jsonsiyuan-sisyphus file get-doc-assets --id '<returned-document-id>' --asset-type 'all' --jsonsiyuan-sisyphus av get --av-id '<av-id>' --jsonsiyuan-sisyphus av render --av-id '<av-id>' --view-id '<view-id>' --page '1' --page-size '50' --jsonCheck exact notebook/path, document/block identity, parent/sibling order, list containment, tables/images/references, typed AV values, and relation endpoints. Observe whether a callout is NodeCallout or NodeBlockquote; if conversion is needed, report the known gap. file.extract_doc and file.export_md supplement evidence but cannot prove exact .sy or UI state.
Schema/data PASS never implies functional or presentation completion. Without live UI evidence, report presentation as unverified. Never hard-code FLO.W fields, exam labels, Chinese tags, personal notebooks, host paths, ports, tokens, source IDs, or secrets.
© yangtaihong59, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/siyuan-sisyphus/siyuan-sisyphus-import-migration of yangtaihong59/siyuan-plugins-mcp-sisyphus.
Open the folder on GitHubat commit d2ad534
Siyuan Sisyphus Import Migration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Siyuan Sisyphus Import Migration this skillyangtaihong59/siyuan-plugins-mcp-sisyphus | 116 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Evolving The Data ModelTriliumNext/Trilium | 38k | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 | |
| Creating Database MigrationsNangoHQ/nango | 13k | — | ~449 | Automated safety check: Pass | Custom licence | |
| Openwrt Package UpdateNethServer/nethsecurity | 192 | — | ~841 | Automated safety check: Pass | Custom licence | |
| Free Willsyahiidkamil/Software-Engineer-AI-Agent-Atlas | 401 | — | ~3.4k | Automated safety check: Pass | None | |
| Ecto Migrationsoperately/operately | 579 | — | ~1.2k | Automated safety check: Pass | Custom licence |
TriliumNext/Trilium
A skill your agent uses when adding a DB migration or a new column/field to a Becca entity in Trilium ("add a migration", "new column on notes/attributes", "ALTER TABLE", "add a field to…
NangoHQ/nango
A skill your agent uses when adding or editing Nango database migrations - covers migration directory selection, timestamped .cjs naming, matching recent migration style, down migration decisions…
NethServer/nethsecurity
A skill your agent uses when updating any forked OpenWrt package in a NethSecurity workspace from the upstream openwrt/packages feed.
syahiidkamil/Software-Engineer-AI-Agent-Atlas
Deliberate-choice procedure for a medium-to-high-stakes engineering fork — when the first plausible solution (the instinct, the default next-token pull) would be costly to get wrong.
operately/operately
Rules for Operately schema migrations (app/priv/repo/migrations/) and data migrations (app/lib/operately/data/change.ex).
simstudioai/sim
Author or review a Drizzle DB migration for zero-downtime safety — expand/contract phasing, backward-compatibility with the deployed app version, and writing the -- migration-safe acknowledgment the…
yangtaihong59/siyuan-plugins-mcp-sisyphus
使用仓库刚构建的 dist/mcp-server.cjs 与 cli/dist/cli.cjs,在真实思源实例的隔离测试笔记本中执行端到端验收。用于验证工具或 action 修改、严格安全写入、短哈希预检租约、幂等重放、状态变化拒绝、HTTP/stdio/CLI 一致性,以及用户要求“实际测试”“真实笔记本测试”“全部 action 测试”或“不要只跑 mock”时。
yangtaihong59/siyuan-plugins-mcp-sisyphus
Configure, repair, and verify MCP servers and MCP Apps in Claude Desktop on macOS.
yangtaihong59/siyuan-plugins-mcp-sisyphus
Chinese git workflow conventions including commit message generation and merge practices.
yangtaihong59/siyuan-plugins-mcp-sisyphus
MCP playbook for browsing and reading SiYuan notes. An agent skill from yangtaihong59/siyuan-plugins-mcp-sisyphus.
yangtaihong59/siyuan-plugins-mcp-sisyphus
MCP playbook for creating and editing SiYuan documents and blocks.
yangtaihong59/siyuan-plugins-mcp-sisyphus
Top-level skill for operating SiYuan Note through the Sisyphus MCP server.
Categories
CLI-only staged playbook for Markdown and external database migration with explicit targets, mappings, bounded writes, and layered readback. Siyuan Sisyphus Import Migration is an agent skill from yangtaihong59/siyuan-plugins-mcp-sisyphus. CLI-only staged playbook for Markdown and external database migration with explicit targets, mappings, bounded writes, and layered readback.
Siyuan Sisyphus Import Migration fits situations like: tasks that involve Database migrations.
Run `npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a claude-code`. Or copy the skill folder (skills/siyuan-sisyphus/siyuan-sisyphus-import-migration in yangtaihong59/siyuan-plugins-mcp-sisyphus) into .claude/skills/siyuan-sisyphus-import-migration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a codex`. Or copy the skill folder (skills/siyuan-sisyphus/siyuan-sisyphus-import-migration in yangtaihong59/siyuan-plugins-mcp-sisyphus) into .agents/skills/siyuan-sisyphus-import-migration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yangtaihong59/siyuan-plugins-mcp-sisyphus --skill siyuan-sisyphus-import-migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/siyuan-sisyphus-import-migration, .gemini/skills/siyuan-sisyphus-import-migration, .github/skills/siyuan-sisyphus-import-migration and .opencode/skills/siyuan-sisyphus-import-migration in your project.
SKILL.md names no scripts, command-line tools or credentials: Siyuan Sisyphus Import Migration is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Siyuan Sisyphus Import Migration is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Siyuan Sisyphus Import Migration: Evolving The Data Model (TriliumNext/Trilium, 38k stars), Creating Database Migrations (NangoHQ/nango, 13k stars), Openwrt Package Update (NethServer/nethsecurity, 192 stars) and Free Will (syahiidkamil/Software-Engineer-AI-Agent-Atlas, 401 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
yangtaihong59 (a GitHub user) maintains it in yangtaihong59/siyuan-plugins-mcp-sisyphus, which has 116 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 8, 2026.
Source: yangtaihong59/siyuan-plugins-mcp-sisyphus on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.