[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71TA9F27JBWCE9E5DYPZ4P4":3,"skill-same:01M71TA9F27JBWCE9E5DYPZ4P4":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":13,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M71TA9F27JBWCE9E5DYPZ4P4","spotify",null,"Spotify: play, search, queue, manage playlists and devices.","eliottbusiness\u002FDeptFlow-Agent","eliottbusiness","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F263418316?v=4","01M71T5T608RHFA07W6QVC6TYX","01M71T5T6R98RMYZ53PYH851T1",0,"MIT","https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent\u002Fblob\u002Fmain\u002Fprofile\u002Fskills\u002Fmedia\u002Fspotify\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29],"Media","devices","manage","search","play","gif","queue","library","hermes","hermes agent","music","playlists","2026-11-10 13:02:02",false,"---\nname: spotify\ndescription: \"Spotify: play, search, queue, manage playlists and devices.\"\nversion: 1.0.0\nauthor: Hermes Agent\nlicense: MIT\nprerequisites:\n  tools: [spotify_playback, spotify_devices, spotify_queue, spotify_search, spotify_playlists, spotify_albums, spotify_library]\nmetadata:\n  hermes:\n    tags: [spotify, music, playback, playlists, media]\n    related_skills: [gif-search]\n---\n\n# Spotify\n\nControl the user's Spotify account via the Hermes Spotify toolset (7 tools). Setup guide: https:\u002F\u002Fhermes-agent.nousresearch.com\u002Fdocs\u002Fuser-guide\u002Ffeatures\u002Fspotify\n\n## When to use this skill\n\nThe user says something like \"play X\", \"pause\", \"skip\", \"queue up X\", \"what's playing\", \"search for X\", \"add to my X playlist\", \"make a playlist\", \"save this to my library\", etc.\n\n## The 7 tools\n\n- `spotify_playback` — play, pause, next, previous, seek, set_repeat, set_shuffle, set_volume, get_state, get_currently_playing, recently_played\n- `spotify_devices` — list, transfer\n- `spotify_queue` — get, add\n- `spotify_search` — search the catalog\n- `spotify_playlists` — list, get, create, add_items, remove_items, update_details\n- `spotify_albums` — get, tracks\n- `spotify_library` — list\u002Fsave\u002Fremove with `kind: \"tracks\"|\"albums\"`\n\nPlayback-mutating actions require Spotify Premium; search\u002Flibrary\u002Fplaylist ops work on Free.\n\n## Canonical patterns (minimize tool calls)\n\n### \"Play \u003Cartist\u002Ftrack\u002Falbum>\"\nOne search, then play by URI. Do NOT loop through search results describing them unless the user asked for options.\n\n```\nspotify_search({\"query\": \"miles davis kind of blue\", \"types\": [\"album\"], \"limit\": 1})\n→ got album URI spotify:album:1weenld61qoidwYuZ1GESA\nspotify_playback({\"action\": \"play\", \"context_uri\": \"spotify:album:1weenld61qoidwYuZ1GESA\"})\n```\n\nFor \"play some \u003Cartist>\" (no specific song), prefer `types: [\"artist\"]` and play the artist context URI — Spotify handles smart shuffle. If the user says \"the song\" or \"that track\", search `types: [\"track\"]` and pass `uris: [track_uri]` to play.\n\n### \"What's playing?\" \u002F \"What am I listening to?\"\nSingle call — don't chain get_state after get_currently_playing.\n\n```\nspotify_playback({\"action\": \"get_currently_playing\"})\n```\n\nIf it returns 204\u002Fempty (`is_playing: false`), tell the user nothing is playing. Don't retry.\n\n### \"Pause\" \u002F \"Skip\" \u002F \"Volume 50\"\nDirect action, no preflight inspection needed.\n\n```\nspotify_playback({\"action\": \"pause\"})\nspotify_playback({\"action\": \"next\"})\nspotify_playback({\"action\": \"set_volume\", \"volume_percent\": 50})\n```\n\n### \"Add to my \u003Cplaylist name> playlist\"\n1. `spotify_playlists list` to find the playlist ID by name\n2. Get the track URI (from currently playing, or search)\n3. `spotify_playlists add_items` with the playlist_id and URIs\n\n```\nspotify_playlists({\"action\": \"list\"})\n→ found \"Late Night Jazz\" = 37i9dQZF1DX4wta20PHgwo\nspotify_playback({\"action\": \"get_currently_playing\"})\n→ current track uri = spotify:track:0DiWol3AO6WpXZgp0goxAV\nspotify_playlists({\"action\": \"add_items\",\n                   \"playlist_id\": \"37i9dQZF1DX4wta20PHgwo\",\n                   \"uris\": [\"spotify:track:0DiWol3AO6WpXZgp0goxAV\"]})\n```\n\n### \"Create a playlist called X and add the last 3 songs I played\"\n```\nspotify_playback({\"action\": \"recently_played\", \"limit\": 3})\nspotify_playlists({\"action\": \"create\", \"name\": \"Focus 2026\"})\n→ got playlist_id back in response\nspotify_playlists({\"action\": \"add_items\", \"playlist_id\": \u003Cid>, \"uris\": [\u003C3 uris>]})\n```\n\n### \"Save \u002F unsave \u002F is this saved?\"\nUse `spotify_library` with the right `kind`.\n\n```\nspotify_library({\"kind\": \"tracks\", \"action\": \"save\", \"uris\": [\"spotify:track:...\"]})\nspotify_library({\"kind\": \"albums\", \"action\": \"list\", \"limit\": 50})\n```\n\n### \"Transfer playback to my \u003Cdevice>\"\n```\nspotify_devices({\"action\": \"list\"})\n→ pick the device_id by matching name\u002Ftype\nspotify_devices({\"action\": \"transfer\", \"device_id\": \"\u003Cid>\", \"play\": true})\n```\n\n## Critical failure modes\n\n**`403 Forbidden — No active device found`** on any playback action means Spotify isn't running anywhere. Tell the user: \"Open Spotify on your phone\u002Fdesktop\u002Fweb player first, start any track for a second, then retry.\" Don't retry the tool call blindly — it will fail the same way. You can call `spotify_devices list` to confirm; an empty list means no active device.\n\n**`403 Forbidden — Premium required`** means the user is on Free and tried to mutate playback. Don't retry; tell them this action needs Premium. Reads still work (search, playlists, library, get_state).\n\n**`204 No Content` on `get_currently_playing`** is NOT an error — it means nothing is playing. The tool returns `is_playing: false`. Just report that to the user.\n\n**`429 Too Many Requests`** = rate limit. Wait and retry once. If it keeps happening, you're looping — stop.\n\n**`401 Unauthorized` after a retry** — refresh token revoked. Tell the user to run `hermes auth spotify` again.\n\n## URI and ID formats\n\nSpotify uses three interchangeable ID formats. The tools accept all three and normalize:\n\n- URI: `spotify:track:0DiWol3AO6WpXZgp0goxAV` (preferred)\n- URL: `https:\u002F\u002Fopen.spotify.com\u002Ftrack\u002F0DiWol3AO6WpXZgp0goxAV`\n- Bare ID: `0DiWol3AO6WpXZgp0goxAV`\n\nWhen in doubt, use full URIs. Search results return URIs in the `uri` field — pass those directly.\n\nEntity types: `track`, `album`, `artist`, `playlist`, `show`, `episode`. Use the right type for the action — `spotify_playback.play` with a `context_uri` expects album\u002Fplaylist\u002Fartist; `uris` expects an array of track URIs.\n\n## What NOT to do\n\n- **Don't call `get_state` before every action.** Spotify accepts play\u002Fpause\u002Fskip without preflight. Only inspect state when the user asked \"what's playing\" or you need to reason about device\u002Ftrack.\n- **Don't describe search results unless asked.** If the user said \"play X\", search, grab the top URI, play it. They'll hear it's wrong if it's wrong.\n- **Don't retry on `403 Premium required` or `403 No active device`.** Those are permanent until user action.\n- **Don't use `spotify_search` to find a playlist by name** — that searches the public Spotify catalog. User playlists come from `spotify_playlists list`.\n- **Don't mix `kind: \"tracks\"` with album URIs** in `spotify_library` (or vice versa). The tool normalizes IDs but the API endpoint differs.\n","# Spotify\n\nControl the user's Spotify account via the Hermes Spotify toolset (7 tools). Setup guide: https:\u002F\u002Fhermes-agent.nousresearch.com\u002Fdocs\u002Fuser-guide\u002Ffeatures\u002Fspotify\n\n## When to use this skill\n\nThe user says something like \"play X\", \"pause\", \"skip\", \"queue up X\", \"what's playing\", \"search for X\", \"add to my X playlist\", \"make a playlist\", \"save this to my library\", etc.\n\n## The 7 tools\n\n- `spotify_playback` — play, pause, next, previous, seek, set_repeat, set_shuffle, set_volume, get_state, get_currently_playing, recently_played\n- `spotify_devices` — list, transfer\n- `spotify_queue` — get, add\n- `spotify_search` — search the catalog\n- `spotify_playlists` — list, get, create, add_items, remove_items, update_details\n- `spotify_albums` — get, tracks\n- `spotify_library` — list\u002Fsave\u002Fremove with `kind: \"tracks\"|\"albums\"`\n\nPlayback-mutating actions require Spotify Premium; search\u002Flibrary\u002Fplaylist ops work on Free.\n\n## Canonical patterns (minimize tool calls)\n\n### \"Play \u003Cartist\u002Ftrack\u002Falbum>\"\nOne search, then play by URI. Do NOT loop through search results describing them unless the user asked for options.\n\n```\nspotify_search({\"query\": \"miles davis kind of blue\", \"types\": [\"album\"], \"limit\": 1})\n→ got album URI spotify:album:1weenld61qoidwYuZ1GESA\nspotify_playback({\"action\": \"play\", \"context_uri\": \"spotify:album:1weenld61qoidwYuZ1GESA\"})\n```\n\nFor \"play some \u003Cartist>\" (no specific song), prefer `types: [\"artist\"]` and play the artist context URI — Spotify handles smart shuffle. If the user says \"the song\" or \"that track\", search `types: [\"track\"]` and pass `uris: [track_uri]` to play.\n\n### \"What's playing?\" \u002F \"What am I listening to?\"\nSingle call — don't chain get_state after get_currently_playing.\n\n```\nspotify_playback({\"action\": \"get_currently_playing\"})\n```\n\nIf it returns 204\u002Fempty (`is_playing: false`), tell the user nothing is playing. Don't retry.\n\n### \"Pause\" \u002F \"Skip\" \u002F \"Volume 50\"\nDirect action, no preflight inspection needed.\n\n```\nspotify_playback({\"action\": \"pause\"})\nspotify_playback({\"action\": \"next\"})\nspotify_playback({\"action\": \"set_volume\", \"volume_percent\": 50})\n```\n\n### \"Add to my \u003Cplaylist name> playlist\"\n1. `spotify_playlists list` to find the playlist ID by name\n2. Get the track URI (from currently playing, or search)\n3. `spotify_playlists add_items` with the playlist_id and URIs\n\n```\nspotify_playlists({\"action\": \"list\"})\n→ found \"Late Night Jazz\" = 37i9dQZF1DX4wta20PHgwo\nspotify_playback({\"action\": \"get_currently_playing\"})\n→ current track uri = spotify:track:0DiWol3AO6WpXZgp0goxAV\nspotify_playlists({\"action\": \"add_items\",\n                   \"playlist_id\": \"37i9dQZF1DX4wta20PHgwo\",\n                   \"uris\": [\"spotify:track:0DiWol3AO6WpXZgp0goxAV\"]})\n```\n\n### \"Create a playlist called X and add the last 3 songs I played\"\n```\nspotify_playback({\"action\": \"recently_played\", \"limit\": 3})\nspotify_playlists({\"action\": \"create\", \"name\": \"Focus 2026\"})\n→ got playlist_id back in response\nspotify_playlists({\"action\": \"add_items\", \"playlist_id\": \u003Cid>, \"uris\": [\u003C3 uris>]})\n```\n\n### \"Save \u002F unsave \u002F is this saved?\"\nUse `spotify_library` with the right `kind`.\n\n```\nspotify_library({\"kind\": \"tracks\", \"action\": \"save\", \"uris\": [\"spotify:track:...\"]})\nspotify_library({\"kind\": \"albums\", \"action\": \"list\", \"limit\": 50})\n```\n\n### \"Transfer playback to my \u003Cdevice>\"\n```\nspotify_devices({\"action\": \"list\"})\n→ pick the device_id by matching name\u002Ftype\nspotify_devices({\"action\": \"transfer\", \"device_id\": \"\u003Cid>\", \"play\": true})\n```\n\n## Critical failure modes\n\n**`403 Forbidden — No active device found`** on any playback action means Spotify isn't running anywhere. Tell the user: \"Open Spotify on your phone\u002Fdesktop\u002Fweb player first, start any track for a second, then retry.\" Don't retry the tool call blindly — it will fail the same way. You can call `spotify_devices list` to confirm; an empty list means no active device.\n\n**`403 Forbidden — Premium required`** means the user is on Free and tried to mutate playback. Don't retry; tell them this action needs Premium. Reads still work (search, playlists, library, get_state).\n\n**`204 No Content` on `get_currently_playing`** is NOT an error — it means nothing is playing. The tool returns `is_playing: false`. Just report that to the user.\n\n**`429 Too Many Requests`** = rate limit. Wait and retry once. If it keeps happening, you're looping — stop.\n\n**`401 Unauthorized` after a retry** — refresh token revoked. Tell the user to run `hermes auth spotify` again.\n\n## URI and ID formats\n\nSpotify uses three interchangeable ID formats. The tools accept all three and normalize:\n\n- URI: `spotify:track:0DiWol3AO6WpXZgp0goxAV` (preferred)\n- URL: `https:\u002F\u002Fopen.spotify.com\u002Ftrack\u002F0DiWol3AO6WpXZgp0goxAV`\n- Bare ID: `0DiWol3AO6WpXZgp0goxAV`\n\nWhen in doubt, use full URIs. Search results return URIs in the `uri` field — pass those directly.\n\nEntity types: `track`, `album`, `artist`, `playlist`, `show`, `episode`. Use the right type for the action — `spotify_playback.play` with a `context_uri` expects album\u002Fplaylist\u002Fartist; `uris` expects an array of track URIs.\n\n## What NOT to do\n\n- **Don't call `get_state` before every action.** Spotify accepts play\u002Fpause\u002Fskip without preflight. Only inspect state when the user asked \"what's playing\" or you need to reason about device\u002Ftrack.\n- **Don't describe search results unless asked.** If the user said \"play X\", search, grab the top URI, play it. They'll hear it's wrong if it's wrong.\n- **Don't retry on `403 Premium required` or `403 No active device`.** Those are permanent until user action.\n- **Don't use `spotify_search` to find a playlist by name** — that searches the public Spotify catalog. User playlists come from `spotify_playlists list`.\n- **Don't mix `kind: \"tracks\"` with album URIs** in `spotify_library` (or vice versa). The tool normalizes IDs but the API endpoint differs.\n",{"name":5,"author":35,"license":14,"version":36,"metadata":37,"description":7,"prerequisites":44},"Hermes Agent","1.0.0",{"hermes":38},{"tags":39,"related_skills":42},[5,28,40,29,41],"playback","media",[43],"gif-search",{"tools":45},[46,47,48,49,50,51,52],"spotify_playback","spotify_devices","spotify_queue","spotify_search","spotify_playlists","spotify_albums","spotify_library","main","3ffb682eba417bd920665a7146fecc206b3bccf8","profile\u002Fskills\u002Fmedia\u002Fspotify","https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent","https:\u002F\u002Fgithub.com\u002Feliottbusiness","2026-05-03 19:19:17",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add eliottbusiness\u002FDeptFlow-Agent --skill spotify",{"tool":65,"command":66},"bunx","bunx skills add eliottbusiness\u002FDeptFlow-Agent --skill spotify",{"tool":68,"command":69},"pnpm","pnpm dlx skills add eliottbusiness\u002FDeptFlow-Agent --skill spotify","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent\u002Fblob\u002Fmain\u002Fprofile\u002Fskills\u002Fmedia\u002Fspotify\u002FSKILL.md",true,[],[74,117,142,158,177,201],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":96,"publishedAt":30},"01M71TEDB3XPT9H5R3SH05XWES","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent\u002Fblob\u002Fmain\u002Fprofile\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[80,85,88,93],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":86,"categoryName":87,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":94,"categoryName":95,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000036","内容创作者",[97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116],"writing","writing plans","plans","test-driven","test-driven-development","superpowers","design","workflow","code","tasks","subagent","code-review","review","documentation","write","paths","planning","development","test","implementation",{"skillNo":118,"name":101,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":128,"publishedAt":30},"01M71TEB43BNQKKCRMQZDZ7SAQ","TDD: enforce RED-GREEN-REFACTOR, tests before code.","https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent\u002Fblob\u002Fmain\u002Fprofile\u002Fskills\u002Fsoftware-development\u002Ftest-driven-development\u002FSKILL.md",[122,125],{"categoryNo":123,"categoryName":124,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":126,"categoryName":127,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000008","测试与质量",[129,114,115,130,131,132,133,102,97,134,105,107,135,136,137,138,139,99,140,141],"test driven development","driven","green","red-green-refactor","testing","debugging","systematic","refactor","systematic-debugging","enforce","tests","tdd","quality",{"skillNo":143,"name":137,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":30},"01M71TE76KV9R1WY1V5XQXMMTJ","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent\u002Fblob\u002Fmain\u002Fprofile\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[147],{"categoryNo":126,"categoryName":127,"taxonomyType":83,"taxonomyTypeDesc":84},[149,134,135,100,150,151,101,102,97,107,152,153,114,154,99,155,115,156,157,26],"systematic debugging","problem","problem-solving","phase","bugs","root cause","root-cause","investigation","understand",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":169,"publishedAt":30},"01M71TE2Y2TRFZNT6YRPKQA33R","subagent-driven-development","Execute plans via delegate_task subagents (2-stage review).","https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent\u002Fblob\u002Fmain\u002Fprofile\u002Fskills\u002Fsoftware-development\u002Fsubagent-driven-development\u002FSKILL.md",[164,165,168],{"categoryNo":86,"categoryName":87,"taxonomyType":83,"taxonomyTypeDesc":84},{"categoryNo":166,"categoryName":167,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":94,"categoryName":95,"taxonomyType":91,"taxonomyTypeDesc":92},[170,107,114,130,100,101,171,172,102,97,104,105,108,109,173,174,99,175,176,115],"subagent driven development","delegate","delegation","subagents","parallel","stage","task",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":186,"publishedAt":30},"01M71TE0E7WRGXY6N0WTMDXY23","spike","Throwaway experiments to validate an idea before build.","https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent\u002Fblob\u002Fmain\u002Fprofile\u002Fskills\u002Fsoftware-development\u002Fspike\u002FSKILL.md",[183],{"categoryNo":184,"categoryName":185,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000021","资料检索与研究",[179,187,188,189,113,114,99,190,191,97,192,193,107,194,195,196,197,198,199,200],"concept","exploration","get","throwaway","shit","proof-of-concept","done","prototype","plan","research","build","sketch","mvp","validate",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":209,"publishedAt":30},"01M71TDY3JXZHWSYNF3AZ2XM2D","requesting-code-review","Pre-commit review: security scan, quality gates, auto-fix.","https:\u002F\u002Fgithub.com\u002Feliottbusiness\u002FDeptFlow-Agent\u002Fblob\u002Fmain\u002Fprofile\u002Fskills\u002Fsoftware-development\u002Frequesting-code-review\u002FSKILL.md",[207,208],{"categoryNo":123,"categoryName":124,"taxonomyType":83,"taxonomyTypeDesc":84},{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},[210,211,105,109,100,101,212,213,102,214,97,215,216,107,108,217,218,114,219,99],"code review","requesting code review","fix","auto-fix","auto","security scan","commit","verification","security","scan"]