[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FAPATB65CT60QFKJTP45D9":3,"skill-same:01M6FAPATB65CT60QFKJTP45D9":82},{"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":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":64,"ownerHtmlUrl":65,"ownerBlogUrl":6,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6FAPATB65CT60QFKJTP45D9","generating-stored-procedures",null,"Use when you need to generate, validate, or deploy stored procedures for PostgreSQL, MySQL, or SQL Server.\nCreates database functions, triggers, and procedures with proper error handling and transaction management.\nTrigger with phrases like \"generate stored procedure\", \"create database function\", \"write SQL procedure\",\n\"add trigger to table\", or \"create CRUD procedures\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fgenerating-stored-procedures\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"Generating Stored Procedures","Bash","you","psql","error","io","edit","write","read","crud","openclaw","server","postgresql","mysql","database","code","generate","create","sql server","sql","2026-11-10 10:12:30",false,"---\nname: generating-stored-procedures\ndescription: |\n  Use when you need to generate, validate, or deploy stored procedures for PostgreSQL, MySQL, or SQL Server.\n  Creates database functions, triggers, and procedures with proper error handling and transaction management.\n  Trigger with phrases like \"generate stored procedure\", \"create database function\", \"write SQL procedure\",\n  \"add trigger to table\", or \"create CRUD procedures\".\n\nallowed-tools: Read, Write, Edit, Grep, Glob, Bash(psql:*), Bash(mysql:*), Bash(sqlcmd:*), Bash(python3:*)\nversion: 2.0.0\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\nlicense: MIT\ncompatible-with: claude-code, codex, openclaw\ntags: [database, deployment, postgresql, mysql]\n\n---\n# Stored Procedure Generator\n\nGenerate production-ready stored procedures for PostgreSQL, MySQL, and SQL Server with proper error handling, transaction management, and security best practices.\n\n## Prerequisites\n\n- Database connection credentials (host, port, database, user, password)\n- Appropriate permissions: CREATE PROCEDURE, CREATE FUNCTION, EXECUTE\n- Target database type identified (PostgreSQL, MySQL, or SQL Server)\n\n## Instructions\n\n### Step 1: Identify Database Type and Requirements\n\nDetermine the target database and procedure requirements:\n\n```sql\n-- PostgreSQL: Check version and extensions\nSELECT version();\n\\dx\n\n-- MySQL: Check version and settings\nSELECT VERSION();\nSHOW VARIABLES LIKE 'sql_mode';\n\n-- SQL Server: Check version and edition\nSELECT @@VERSION;\n```\n\n### Step 2: Generate Stored Procedure\n\n**PostgreSQL Function (PL\u002FpgSQL):**\n\n```sql\nCREATE OR REPLACE FUNCTION get_user_by_id(p_user_id INTEGER)\nRETURNS TABLE(id INTEGER, username VARCHAR, email VARCHAR, created_at TIMESTAMP)\nLANGUAGE plpgsql\nAS $$\nBEGIN\n    RETURN QUERY\n    SELECT u.id, u.username, u.email, u.created_at\n    FROM users u\n    WHERE u.id = p_user_id;\n\n    IF NOT FOUND THEN\n        RAISE EXCEPTION 'User with ID % not found', p_user_id\n            USING ERRCODE = 'P0002';\n    END IF;\nEND;\n$$;\n```\n\n**MySQL Stored Procedure:**\n\n```sql\nDELIMITER \u002F\u002F\nCREATE PROCEDURE GetUserById(IN p_user_id INT)\nBEGIN\n    DECLARE user_exists INT DEFAULT 0;\n\n    SELECT COUNT(*) INTO user_exists FROM users WHERE id = p_user_id;\n\n    IF user_exists = 0 THEN\n        SIGNAL SQLSTATE '45000'  # 45000 = configured value\n            SET MESSAGE_TEXT = 'User not found';\n    END IF;\n\n    SELECT id, username, email, created_at\n    FROM users\n    WHERE id = p_user_id;\nEND \u002F\u002F\nDELIMITER ;\n```\n\n**SQL Server Stored Procedure (T-SQL):**\n\n```sql\nCREATE PROCEDURE dbo.GetUserById\n    @UserId INT\nAS\nBEGIN\n    SET NOCOUNT ON;\n\n    IF NOT EXISTS (SELECT 1 FROM dbo.Users WHERE Id = @UserId)\n    BEGIN\n        RAISERROR('User with ID %d not found', 16, 1, @UserId);\n        RETURN;\n    END\n\n    SELECT Id, Username, Email, CreatedAt\n    FROM dbo.Users\n    WHERE Id = @UserId;\nEND;\nGO\n```\n\n### Step 3: Add Transaction Management\n\n**PostgreSQL with Transaction:**\n\n```sql\nCREATE OR REPLACE FUNCTION transfer_funds(\n    p_from_account INTEGER,\n    p_to_account INTEGER,\n    p_amount NUMERIC(15,2)\n)\nRETURNS BOOLEAN\nLANGUAGE plpgsql\nAS $$\nBEGIN\n    -- Debit source account\n    UPDATE accounts SET balance = balance - p_amount\n    WHERE id = p_from_account AND balance >= p_amount;\n\n    IF NOT FOUND THEN\n        RAISE EXCEPTION 'Insufficient funds or invalid source account';\n    END IF;\n\n    -- Credit destination account\n    UPDATE accounts SET balance = balance + p_amount\n    WHERE id = p_to_account;\n\n    IF NOT FOUND THEN\n        RAISE EXCEPTION 'Invalid destination account';\n    END IF;\n\n    RETURN TRUE;\nEXCEPTION\n    WHEN OTHERS THEN\n        RAISE;\nEND;\n$$;\n```\n\n**MySQL with Transaction:**\n\n```sql\nDELIMITER \u002F\u002F\nCREATE PROCEDURE TransferFunds(\n    IN p_from_account INT,\n    IN p_to_account INT,\n    IN p_amount DECIMAL(15,2)\n)\nBEGIN\n    DECLARE EXIT HANDLER FOR SQLEXCEPTION\n    BEGIN\n        ROLLBACK;\n        RESIGNAL;\n    END;\n\n    START TRANSACTION;\n\n    UPDATE accounts SET balance = balance - p_amount\n    WHERE id = p_from_account AND balance >= p_amount;\n\n    IF ROW_COUNT() = 0 THEN\n        SIGNAL SQLSTATE '45000'  # 45000 = configured value\n            SET MESSAGE_TEXT = 'Insufficient funds';\n    END IF;\n\n    UPDATE accounts SET balance = balance + p_amount\n    WHERE id = p_to_account;\n\n    COMMIT;\nEND \u002F\u002F\nDELIMITER ;\n```\n\n### Step 4: Validate Syntax\n\nUse the validation script to check procedure syntax:\n\n```bash\n# Validate PostgreSQL procedure\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fstored_procedure_syntax_validator.py \\\n    --db-type postgresql \\\n    --file procedure.sql\n\n# Validate MySQL procedure\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fstored_procedure_syntax_validator.py \\\n    --db-type mysql \\\n    --file procedure.sql\n```\n\n### Step 5: Deploy to Database\n\n```bash\n# Deploy to PostgreSQL\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fstored_procedure_deployer.py \\\n    --db-type postgresql \\\n    --host localhost \\\n    --database mydb \\\n    --file procedure.sql\n\n# Deploy to MySQL\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fstored_procedure_deployer.py \\\n    --db-type mysql \\\n    --host localhost \\\n    --database mydb \\\n    --file procedure.sql\n```\n\n## Output\n\n- SQL procedure file with proper syntax for target database\n- Validation report confirming syntax correctness\n- Deployment confirmation with execution results\n- Rollback script for procedure removal\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `permission denied` | Missing CREATE PROCEDURE privilege | `GRANT CREATE PROCEDURE ON database TO user;` |\n| `syntax error` | Invalid SQL for database type | Use database-specific syntax validator |\n| `function already exists` | Procedure exists without OR REPLACE | Add `OR REPLACE` or `DROP` first |\n| `undefined column` | Referenced column doesn't exist | Verify table schema before deployment |\n| `transaction aborted` | Error during transaction | Check EXCEPTION handler and ROLLBACK logic |\n\n## Examples\n\n**Generate CRUD procedures for a table:**\n\n```\nUser: Generate CRUD stored procedures for the 'products' table in PostgreSQL\n\nClaude: I'll create four procedures for the products table:\n1. create_product - Insert new product\n2. get_product - Retrieve by ID\n3. update_product - Update existing product\n4. delete_product - Soft delete product\n```\n\n**Create audit trigger:**\n\n```\nUser: Create a trigger to log all changes to the orders table\n\nClaude: I'll create an audit trigger that:\n1. Creates an orders_audit table if not exists\n2. Captures INSERT, UPDATE, DELETE operations\n3. Records old\u002Fnew values, user, and timestamp\n```\n\n## Resources\n\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fpostgresql_stored_procedure_best_practices.md`\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fmysql_stored_procedure_best_practices.md`\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fsqlserver_stored_procedure_best_practices.md`\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fdatabase_security_guidelines.md`\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fstored_procedure_optimization_techniques.md`\n\n## Overview\n\nUse when you need to generate, validate, or deploy stored procedures for PostgreSQL, MySQL, or SQL Server.\n","# Stored Procedure Generator\n\nGenerate production-ready stored procedures for PostgreSQL, MySQL, and SQL Server with proper error handling, transaction management, and security best practices.\n\n## Prerequisites\n\n- Database connection credentials (host, port, database, user, password)\n- Appropriate permissions: CREATE PROCEDURE, CREATE FUNCTION, EXECUTE\n- Target database type identified (PostgreSQL, MySQL, or SQL Server)\n\n## Instructions\n\n### Step 1: Identify Database Type and Requirements\n\nDetermine the target database and procedure requirements:\n\n```sql\n-- PostgreSQL: Check version and extensions\nSELECT version();\n\\dx\n\n-- MySQL: Check version and settings\nSELECT VERSION();\nSHOW VARIABLES LIKE 'sql_mode';\n\n-- SQL Server: Check version and edition\nSELECT @@VERSION;\n```\n\n### Step 2: Generate Stored Procedure\n\n**PostgreSQL Function (PL\u002FpgSQL):**\n\n```sql\nCREATE OR REPLACE FUNCTION get_user_by_id(p_user_id INTEGER)\nRETURNS TABLE(id INTEGER, username VARCHAR, email VARCHAR, created_at TIMESTAMP)\nLANGUAGE plpgsql\nAS $$\nBEGIN\n    RETURN QUERY\n    SELECT u.id, u.username, u.email, u.created_at\n    FROM users u\n    WHERE u.id = p_user_id;\n\n    IF NOT FOUND THEN\n        RAISE EXCEPTION 'User with ID % not found', p_user_id\n            USING ERRCODE = 'P0002';\n    END IF;\nEND;\n$$;\n```\n\n**MySQL Stored Procedure:**\n\n```sql\nDELIMITER \u002F\u002F\nCREATE PROCEDURE GetUserById(IN p_user_id INT)\nBEGIN\n    DECLARE user_exists INT DEFAULT 0;\n\n    SELECT COUNT(*) INTO user_exists FROM users WHERE id = p_user_id;\n\n    IF user_exists = 0 THEN\n        SIGNAL SQLSTATE '45000'  # 45000 = configured value\n            SET MESSAGE_TEXT = 'User not found';\n    END IF;\n\n    SELECT id, username, email, created_at\n    FROM users\n    WHERE id = p_user_id;\nEND \u002F\u002F\nDELIMITER ;\n```\n\n**SQL Server Stored Procedure (T-SQL):**\n\n```sql\nCREATE PROCEDURE dbo.GetUserById\n    @UserId INT\nAS\nBEGIN\n    SET NOCOUNT ON;\n\n    IF NOT EXISTS (SELECT 1 FROM dbo.Users WHERE Id = @UserId)\n    BEGIN\n        RAISERROR('User with ID %d not found', 16, 1, @UserId);\n        RETURN;\n    END\n\n    SELECT Id, Username, Email, CreatedAt\n    FROM dbo.Users\n    WHERE Id = @UserId;\nEND;\nGO\n```\n\n### Step 3: Add Transaction Management\n\n**PostgreSQL with Transaction:**\n\n```sql\nCREATE OR REPLACE FUNCTION transfer_funds(\n    p_from_account INTEGER,\n    p_to_account INTEGER,\n    p_amount NUMERIC(15,2)\n)\nRETURNS BOOLEAN\nLANGUAGE plpgsql\nAS $$\nBEGIN\n    -- Debit source account\n    UPDATE accounts SET balance = balance - p_amount\n    WHERE id = p_from_account AND balance >= p_amount;\n\n    IF NOT FOUND THEN\n        RAISE EXCEPTION 'Insufficient funds or invalid source account';\n    END IF;\n\n    -- Credit destination account\n    UPDATE accounts SET balance = balance + p_amount\n    WHERE id = p_to_account;\n\n    IF NOT FOUND THEN\n        RAISE EXCEPTION 'Invalid destination account';\n    END IF;\n\n    RETURN TRUE;\nEXCEPTION\n    WHEN OTHERS THEN\n        RAISE;\nEND;\n$$;\n```\n\n**MySQL with Transaction:**\n\n```sql\nDELIMITER \u002F\u002F\nCREATE PROCEDURE TransferFunds(\n    IN p_from_account INT,\n    IN p_to_account INT,\n    IN p_amount DECIMAL(15,2)\n)\nBEGIN\n    DECLARE EXIT HANDLER FOR SQLEXCEPTION\n    BEGIN\n        ROLLBACK;\n        RESIGNAL;\n    END;\n\n    START TRANSACTION;\n\n    UPDATE accounts SET balance = balance - p_amount\n    WHERE id = p_from_account AND balance >= p_amount;\n\n    IF ROW_COUNT() = 0 THEN\n        SIGNAL SQLSTATE '45000'  # 45000 = configured value\n            SET MESSAGE_TEXT = 'Insufficient funds';\n    END IF;\n\n    UPDATE accounts SET balance = balance + p_amount\n    WHERE id = p_to_account;\n\n    COMMIT;\nEND \u002F\u002F\nDELIMITER ;\n```\n\n### Step 4: Validate Syntax\n\nUse the validation script to check procedure syntax:\n\n```bash\n# Validate PostgreSQL procedure\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fstored_procedure_syntax_validator.py \\\n    --db-type postgresql \\\n    --file procedure.sql\n\n# Validate MySQL procedure\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fstored_procedure_syntax_validator.py \\\n    --db-type mysql \\\n    --file procedure.sql\n```\n\n### Step 5: Deploy to Database\n\n```bash\n# Deploy to PostgreSQL\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fstored_procedure_deployer.py \\\n    --db-type postgresql \\\n    --host localhost \\\n    --database mydb \\\n    --file procedure.sql\n\n# Deploy to MySQL\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fstored_procedure_deployer.py \\\n    --db-type mysql \\\n    --host localhost \\\n    --database mydb \\\n    --file procedure.sql\n```\n\n## Output\n\n- SQL procedure file with proper syntax for target database\n- Validation report confirming syntax correctness\n- Deployment confirmation with execution results\n- Rollback script for procedure removal\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `permission denied` | Missing CREATE PROCEDURE privilege | `GRANT CREATE PROCEDURE ON database TO user;` |\n| `syntax error` | Invalid SQL for database type | Use database-specific syntax validator |\n| `function already exists` | Procedure exists without OR REPLACE | Add `OR REPLACE` or `DROP` first |\n| `undefined column` | Referenced column doesn't exist | Verify table schema before deployment |\n| `transaction aborted` | Error during transaction | Check EXCEPTION handler and ROLLBACK logic |\n\n## Examples\n\n**Generate CRUD procedures for a table:**\n\n```\nUser: Generate CRUD stored procedures for the 'products' table in PostgreSQL\n\nClaude: I'll create four procedures for the products table:\n1. create_product - Insert new product\n2. get_product - Retrieve by ID\n3. update_product - Update existing product\n4. delete_product - Soft delete product\n```\n\n**Create audit trigger:**\n\n```\nUser: Create a trigger to log all changes to the orders table\n\nClaude: I'll create an audit trigger that:\n1. Creates an orders_audit table if not exists\n2. Captures INSERT, UPDATE, DELETE operations\n3. Records old\u002Fnew values, user, and timestamp\n```\n\n## Resources\n\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fpostgresql_stored_procedure_best_practices.md`\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fmysql_stored_procedure_best_practices.md`\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fsqlserver_stored_procedure_best_practices.md`\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fdatabase_security_guidelines.md`\n- `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fstored_procedure_optimization_techniques.md`\n\n## Overview\n\nUse when you need to generate, validate, or deploy stored procedures for PostgreSQL, MySQL, or SQL Server.\n",{"name":5,"tags":52,"author":54,"license":15,"version":55,"description":56,"allowed-tools":57,"compatible-with":58},[41,53,39,40],"deployment","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","2.0.0","Use when you need to generate, validate, or deploy stored procedures for PostgreSQL, MySQL, or SQL Server.\nCreates database functions, triggers, and procedures with proper error handling and transaction management.\nTrigger with phrases like \"generate stored procedure\", \"create database function\", \"write SQL procedure\",\n\"add trigger to table\", or \"create CRUD procedures\".\n","Read, Write, Edit, Grep, Glob, Bash(psql:*), Bash(mysql:*), Bash(sqlcmd:*), Bash(python3:*)","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fgenerating-stored-procedures",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill generating-stored-procedures",{"tool":74,"command":75},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill generating-stored-procedures",{"tool":77,"command":78},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill generating-stored-procedures","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fgenerating-stored-procedures\u002FSKILL.md",true,[],[83,95,105,114,120,127],{"skillNo":84,"name":85,"nameZh":6,"description":6,"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":91,"publishedAt":47},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[92,93,94],"model","model hierarchy","model hierarchy skill",{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":47},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[100],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},[102,103,104],"MCP","zoom","zoom mcp",{"skillNo":106,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":47},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[111,112,113,103],"sdk","zoom apps sdk","apps",{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":47},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[116],{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":47},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[125],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},[122],{"skillNo":128,"name":129,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":47},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[129]]