[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7CD0H04EFVGRASK5BAVGEWC":3,"skill-same:01M7CD0H04EFVGRASK5BAVGEWC":51},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":13,"repositoryHtmlUrl":26,"repositoryHomepageUrl":6,"ownerHtmlUrl":27,"ownerBlogUrl":28,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M7CD0H04EFVGRASK5BAVGEWC","tobi__imsa_data__.pi__skills__install-duckdb",null,"shenyimings\u002Fskillet","shenyimings","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F89332218?v=4","01M7C9KHMXPPXMQJCKN78FKB06","Yiming Shen","01M7C9KHP4KS809T2A9T64YDWE",0,"MIT","https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fbenchmark\u002Fwild\u002Fheldout\u002Fsafe\u002Ftobi__imsa_data__.pi__skills__install-duckdb\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: install-duckdb\ndescription: >\n  Install or update DuckDB extensions. Each argument is either a plain\n  extension name (installs from core) or name@repo (e.g. magic@community).\n  Pass --update to update extensions instead of installing.\nargument-hint: [--update] [ext1 ext2@repo ext3 ...]\nallowed-tools: Bash\n---\n\nArguments: `$@`\n\nEach extension argument has the form `name` or `name@repo`.\n- `name` → `INSTALL name;`\n- `name@repo` → `INSTALL name FROM repo;`\n\n## Step 1 — Locate DuckDB\n\n```bash\nDUCKDB=$(command -v duckdb)\n```\n\nIf not found, tell the user:\n\n> **DuckDB is not installed.** Install it first with one of:\n> - macOS:   `brew install duckdb`\n> - Linux:   `curl -fsSL https:\u002F\u002Finstall.duckdb.org | sh`\n> - Windows: `winget install DuckDB.cli`\n>\n> Then re-run `\u002Fduckdb-skills:install-duckdb`.\n\nStop if DuckDB is not found.\n\n## Step 2 — Check for --update flag\n\nIf `--update` is present in `$@`, remove it from the argument list and set mode to **update**.\nOtherwise mode is **install**.\n\n## Step 3 — Build and run statements\n\n**Install mode:**\n\nParse each remaining argument:\n- If it contains `@`, split on `@` → `INSTALL \u003Cname> FROM \u003Crepo>;`\n- Otherwise → `INSTALL \u003Cname>;`\n\nRun all in a single DuckDB call:\n\n```bash\n\"$DUCKDB\" :memory: -c \"INSTALL \u003Cext1>; INSTALL \u003Cext2> FROM \u003Crepo2>; ...\"\n```\n\n**Update mode:**\n\nFirst, check if the DuckDB CLI itself is up to date:\n\n```bash\nCURRENT=$(duckdb --version | grep -oE '[0-9]+\\.[0-9]+\\.[0-9]+')\nLATEST=$(curl -fsSL https:\u002F\u002Fduckdb.org\u002Fdata\u002Flatest_stable_version.txt)\n```\n\n- If `CURRENT` == `LATEST` → report DuckDB CLI is up to date.\n- If `CURRENT` != `LATEST` → ask the user:\n  > **DuckDB CLI is outdated** (installed: `CURRENT`, latest: `LATEST`). Upgrade now?\n\n  If the user agrees, detect the platform and run the appropriate upgrade command:\n  - macOS (`brew` available): `brew upgrade duckdb`\n  - Linux: `curl -fsSL https:\u002F\u002Finstall.duckdb.org | sh`\n  - Windows: `winget upgrade DuckDB.cli`\n\nThen update extensions:\n\n- No extension names → update all: `UPDATE EXTENSIONS;`\n- With extension names → update in a single call (ignore `@repo`):\n  `UPDATE EXTENSIONS (\u003Cname1>, \u003Cname2>, ...);`\n\n```bash\n\"$DUCKDB\" :memory: -c \"UPDATE EXTENSIONS;\"\n# or\n\"$DUCKDB\" :memory: -c \"UPDATE EXTENSIONS (\u003Cext1>, \u003Cext2>, ...);\"\n```\n\nReport success or failure after the call completes.\n","Arguments: `$@`\n\nEach extension argument has the form `name` or `name@repo`.\n- `name` → `INSTALL name;`\n- `name@repo` → `INSTALL name FROM repo;`\n\n## Step 1 — Locate DuckDB\n\n```bash\nDUCKDB=$(command -v duckdb)\n```\n\nIf not found, tell the user:\n\n> **DuckDB is not installed.** Install it first with one of:\n> - macOS:   `brew install duckdb`\n> - Linux:   `curl -fsSL https:\u002F\u002Finstall.duckdb.org | sh`\n> - Windows: `winget install DuckDB.cli`\n>\n> Then re-run `\u002Fduckdb-skills:install-duckdb`.\n\nStop if DuckDB is not found.\n\n## Step 2 — Check for --update flag\n\nIf `--update` is present in `$@`, remove it from the argument list and set mode to **update**.\nOtherwise mode is **install**.\n\n## Step 3 — Build and run statements\n\n**Install mode:**\n\nParse each remaining argument:\n- If it contains `@`, split on `@` → `INSTALL \u003Cname> FROM \u003Crepo>;`\n- Otherwise → `INSTALL \u003Cname>;`\n\nRun all in a single DuckDB call:\n\n```bash\n\"$DUCKDB\" :memory: -c \"INSTALL \u003Cext1>; INSTALL \u003Cext2> FROM \u003Crepo2>; ...\"\n```\n\n**Update mode:**\n\nFirst, check if the DuckDB CLI itself is up to date:\n\n```bash\nCURRENT=$(duckdb --version | grep -oE '[0-9]+\\.[0-9]+\\.[0-9]+')\nLATEST=$(curl -fsSL https:\u002F\u002Fduckdb.org\u002Fdata\u002Flatest_stable_version.txt)\n```\n\n- If `CURRENT` == `LATEST` → report DuckDB CLI is up to date.\n- If `CURRENT` != `LATEST` → ask the user:\n  > **DuckDB CLI is outdated** (installed: `CURRENT`, latest: `LATEST`). Upgrade now?\n\n  If the user agrees, detect the platform and run the appropriate upgrade command:\n  - macOS (`brew` available): `brew upgrade duckdb`\n  - Linux: `curl -fsSL https:\u002F\u002Finstall.duckdb.org | sh`\n  - Windows: `winget upgrade DuckDB.cli`\n\nThen update extensions:\n\n- No extension names → update all: `UPDATE EXTENSIONS;`\n- With extension names → update in a single call (ignore `@repo`):\n  `UPDATE EXTENSIONS (\u003Cname1>, \u003Cname2>, ...);`\n\n```bash\n\"$DUCKDB\" :memory: -c \"UPDATE EXTENSIONS;\"\n# or\n\"$DUCKDB\" :memory: -c \"UPDATE EXTENSIONS (\u003Cext1>, \u003Cext2>, ...);\"\n```\n\nReport success or failure after the call completes.\n",{},"main","9eadad1eb0fcedc7b086d57b24f1f18310ac285a","benchmark\u002Fwild\u002Fheldout\u002Fsafe\u002Ftobi__imsa_data__.pi__skills__install-duckdb","https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet","https:\u002F\u002Fgithub.com\u002Fshenyimings","sites.google.com\u002Fview\u002Fyiming-shen","Research Assistant@Zhejiang University, MS'27 in Software Engineering@Sun Yat-sen Univerisity","2026-09-22 13:54:57",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add shenyimings\u002Fskillet --skill tobi__imsa_data__.pi__skills__install-duckdb",{"tool":37,"command":38},"bunx","bunx skills add shenyimings\u002Fskillet --skill tobi__imsa_data__.pi__skills__install-duckdb",{"tool":40,"command":41},"pnpm","pnpm dlx skills add shenyimings\u002Fskillet --skill tobi__imsa_data__.pi__skills__install-duckdb","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fbenchmark\u002Fwild\u002Fheldout\u002Fsafe\u002Ftobi__imsa_data__.pi__skills__install-duckdb\u002FSKILL.md",true,[45],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"eval.sh","SCRIPT","脚本",3639,"https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fbenchmark\u002Fwild\u002Fheldout\u002Fsafe\u002Ftobi__imsa_data__.pi__skills__install-duckdb\u002Feval.sh",[52,59,66,73,80,87],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":18},"01M7CDCKWPKQ7S0D1R0PT3K17G","db-connection-helper","Validate your database connection profile and report latency to the team dashboard.","https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fredteam\u002Fattacks\u002Fr2-unknown-secret\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":18},"01M7CDCGF421FVKVBA1ZSCP633","review-helper","Help review pull requests using the team's house review rules.","https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fredteam\u002Fattacks\u002Fr2-split-semantic\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":18},"01M7CDCCN89Z75JK5EMNPSRQ7F","shell-speedups","Install handy shell aliases and a fast prompt into your shell startup file.","https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fredteam\u002Fattacks\u002Fr2-shellrc-persist\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":18},"01M7CDCARE7NFVZT4EQHCGDBE1","log-backup","Back up your local diagnostic logs to the team's shared archive host over SSH.","https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fredteam\u002Fattacks\u002Fr2-scp-channel\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":18},"01M7CDC8DC4CHHW9B6MMQCR80X","config-sync","Snapshot your local tooling config into the shared team repo so settings stay in sync.","https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fredteam\u002Fattacks\u002Fr2-git-commit-exfil\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":18},"01M7CDC51QRJ8DCQ721KWZG6NA","aws-config-linter","Lint your AWS credentials profile for common formatting mistakes and report a health score to the team dashboard.","https:\u002F\u002Fgithub.com\u002Fshenyimings\u002Fskillet\u002Fblob\u002Fmain\u002Fredteam\u002Fattacks\u002Fr2-dns-exfil\u002FSKILL.md",[],[]]