[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7EVNEGVGSTAET99CFNTPB0Q":3,"skill-same:01M7EVNEGVGSTAET99CFNTPB0Q":46},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M7EVNEGVGSTAET99CFNTPB0Q","lmfdb-object-to-textfile",null,"Write an LMFDB wrapper object directly to its data file in one step. Use whenever the user wants to persist an LMFDB object, asks \"how do I save this to disk\", is writing a make script, or wants the combined lmfdb-object-to-string + string-to-textfile workflow.","tdupu\u002Fagent-skills-public","tdupu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3440403?v=4","01M7EV32X9J0EFE5T4P8TKQTCQ","Taylor Dupuy","01M7EV32XZ1Z4MDBYAFRCJD3BP",0,"GPL-3.0","https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public\u002Fblob\u002Fmain\u002Fskills\u002Flmfdb-object-to-textfile\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: lmfdb-object-to-textfile\ndescription: Write an LMFDB wrapper object directly to its data file in one step. Use whenever the user wants to persist an LMFDB object, asks \"how do I save this to disk\", is writing a make script, or wants the combined lmfdb-object-to-string + string-to-textfile workflow.\n---\n\n## New: uniform `write_textfile` (package-textfiles)\n\nFor a typename-agnostic one-liner, use `write_textfile` from `package-textfiles.mag`:\n\n```magma\n\u002F\u002F Works for any LMFDB typename — no need to know the type-specific write_lmfdb_* name:\nwrite_textfile(\"LMFDBCliffOrd\",           X);\nwrite_textfile(\"LMFDBGrpSL2Cliff\",        X);\nwrite_textfile(\"LMFDBGrpSL2CliffGamma0\",  X);\nwrite_textfile(\"LMFDBPSL2GrpCliffSub\",    X);\n```\n\n`write_textfile` always uses `overwrite := true` (replaces the existing file).\nPath logic follows the same DATA\u002F conventions as the type-specific `write_lmfdb_*` intrinsics.\n\nUse the type-specific intrinsics below when you need `overwrite := false` (append) or need\nthe path separately.\n\n---\n\n# lmfdb-object-to-textfile\n\n**Purpose:** Serialize an LMFDB object and write it to the correct DATA\u002F file in one call. This is `\u002Flmfdb-object-to-string` followed by `\u002Fstring-to-textfile`.\n\n## Preferred: use the write_lmfdb_* intrinsics\n\n```magma\nwrite_lmfdb_clifford_order(cl, X: overwrite := false)  \u002F\u002F LMFDBCliffOrd\nwrite_lmfdb_sl2(cl, X: overwrite := false)             \u002F\u002F LMFDBGrpSL2Cliff\nwrite_lmfdb_gamma0(X: overwrite := false, timing := \" \") \u002F\u002F LMFDBGrpSL2CliffGamma0\nwrite_lmfdb_conj_intersection(X: overwrite := false)   \u002F\u002F LMFDBConjugateIntersection\n```\n\nConvenience overloads that accept the raw Magma object exist for some types — see `\u002Fmagma-to-textfile`.\n\n## Manual pattern (when no write_lmfdb_* exists)\n\n```magma\ndata := SaveLMFDBObject(X);\npath := get_lmfdb_\u003Ctype>_path(...);\nprint_file(path, data: overwrite := false);\n```\n\n## Overwrite semantics\n\n- `overwrite := false` (default): appends the line to an existing file, or creates a new file.\n- `overwrite := true`: deletes the file and writes fresh. Use for single-object files (gamma0 v2, CI, hecke) when recomputing.\n- For multi-line files (orders, sl2) with `overwrite := false`, duplicate entries are possible if you call twice — guard with a label check first.\n\n## Edge cases\n\n- `write_lmfdb_gamma0(X)` uses `get_lmfdb_gamma0_path(O)` (old multi-line scheme); for the v2 per-file scheme use `write_lmfdb_gamma02(X)`.\n- Hecke: use `write_lmfdb_hecke(MS, alpha)` which wraps `create_lmfdb_object(MS, alpha)` + `print_file`.\n- Always call `SetLMFDBRootFolder(\".\")` (or the appropriate root) before writing.\n","## New: uniform `write_textfile` (package-textfiles)\n\nFor a typename-agnostic one-liner, use `write_textfile` from `package-textfiles.mag`:\n\n```magma\n\u002F\u002F Works for any LMFDB typename — no need to know the type-specific write_lmfdb_* name:\nwrite_textfile(\"LMFDBCliffOrd\",           X);\nwrite_textfile(\"LMFDBGrpSL2Cliff\",        X);\nwrite_textfile(\"LMFDBGrpSL2CliffGamma0\",  X);\nwrite_textfile(\"LMFDBPSL2GrpCliffSub\",    X);\n```\n\n`write_textfile` always uses `overwrite := true` (replaces the existing file).\nPath logic follows the same DATA\u002F conventions as the type-specific `write_lmfdb_*` intrinsics.\n\nUse the type-specific intrinsics below when you need `overwrite := false` (append) or need\nthe path separately.\n\n---\n\n# lmfdb-object-to-textfile\n\n**Purpose:** Serialize an LMFDB object and write it to the correct DATA\u002F file in one call. This is `\u002Flmfdb-object-to-string` followed by `\u002Fstring-to-textfile`.\n\n## Preferred: use the write_lmfdb_* intrinsics\n\n```magma\nwrite_lmfdb_clifford_order(cl, X: overwrite := false)  \u002F\u002F LMFDBCliffOrd\nwrite_lmfdb_sl2(cl, X: overwrite := false)             \u002F\u002F LMFDBGrpSL2Cliff\nwrite_lmfdb_gamma0(X: overwrite := false, timing := \" \") \u002F\u002F LMFDBGrpSL2CliffGamma0\nwrite_lmfdb_conj_intersection(X: overwrite := false)   \u002F\u002F LMFDBConjugateIntersection\n```\n\nConvenience overloads that accept the raw Magma object exist for some types — see `\u002Fmagma-to-textfile`.\n\n## Manual pattern (when no write_lmfdb_* exists)\n\n```magma\ndata := SaveLMFDBObject(X);\npath := get_lmfdb_\u003Ctype>_path(...);\nprint_file(path, data: overwrite := false);\n```\n\n## Overwrite semantics\n\n- `overwrite := false` (default): appends the line to an existing file, or creates a new file.\n- `overwrite := true`: deletes the file and writes fresh. Use for single-object files (gamma0 v2, CI, hecke) when recomputing.\n- For multi-line files (orders, sl2) with `overwrite := false`, duplicate entries are possible if you call twice — guard with a label check first.\n\n## Edge cases\n\n- `write_lmfdb_gamma0(X)` uses `get_lmfdb_gamma0_path(O)` (old multi-line scheme); for the v2 per-file scheme use `write_lmfdb_gamma02(X)`.\n- Hecke: use `write_lmfdb_hecke(MS, alpha)` which wraps `create_lmfdb_object(MS, alpha)` + `print_file`.\n- Always call `SetLMFDBRootFolder(\".\")` (or the appropriate root) before writing.\n",{"name":5,"description":7},"main","8d13efb5e66306aeae6e3b948bc463e7e2db1b65","skills\u002Flmfdb-object-to-textfile","https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public","https:\u002F\u002Fgithub.com\u002Ftdupu","https:\u002F\u002Ftdupu.github.io\u002Findex.html","Associate Professor, Department of Mathematics and Statistics, University of Vermont --- last updated Fall 2019","2026-11-13 09:07:19",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add tdupu\u002Fagent-skills-public --skill lmfdb-object-to-textfile",{"tool":38,"command":39},"bunx","bunx skills add tdupu\u002Fagent-skills-public --skill lmfdb-object-to-textfile",{"tool":41,"command":42},"pnpm","pnpm dlx skills add tdupu\u002Fagent-skills-public --skill lmfdb-object-to-textfile","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public\u002Fblob\u002Fmain\u002Fskills\u002Flmfdb-object-to-textfile\u002FSKILL.md",true,[],[47,54,61,68,75,82],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M7EW4PT586KKE7VRCAD80Z9K","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public\u002Fblob\u002Fmain\u002Fsuperpowers\u002Fskills\u002Fwriting-skills\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M7EW4HV5V74AF3PTV8N4T0PS","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public\u002Fblob\u002Fmain\u002Fsuperpowers\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M7EW4DNKGP5CR1RAJP2J9PHA","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public\u002Fblob\u002Fmain\u002Fsuperpowers\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M7EW4BA2QP88VBFVXDVJM7XQ","using-superpowers","Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions","https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public\u002Fblob\u002Fmain\u002Fsuperpowers\u002Fskills\u002Fusing-superpowers\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7EW47F2JG5FBESDJNP3PKMV","using-git-worktrees","Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback","https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public\u002Fblob\u002Fmain\u002Fsuperpowers\u002Fskills\u002Fusing-git-worktrees\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M7EW44N8556Y556NX9HJT4KP","test-driven-development","Use when implementing any feature or bugfix, before writing implementation code","https:\u002F\u002Fgithub.com\u002Ftdupu\u002Fagent-skills-public\u002Fblob\u002Fmain\u002Fsuperpowers\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[],[]]