[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DERDP9Z22S5CSX8GVMA4AX":3,"skill-same:01M7DERDP9Z22S5CSX8GVMA4AX":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":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":6,"updatedAt":31,"install":32,"resources":45},"01M7DERDP9Z22S5CSX8GVMA4AX","gh-projects",null,"Use when working with GitHub Projects — listing items, changing status, adding issues or PRs, or looking up project field IDs","kejadlen\u002Fdotfiles","kejadlen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8639?v=4","01M7DEPV4SN2WBW50SBF2KG7D1","Alpha Chen","01M7DEPV5FBX0YWCBKEVHKT8E2",10,"MIT","https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fgh-projects\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: gh-projects\ndescription: Use when working with GitHub Projects — listing items, changing status, adding issues or PRs, or looking up project field IDs\n---\n\n# GitHub Projects\n\nQuick reference for `gh project` commands on personal projects (`@me`). Run `gh project \u003Ccommand> --help` for full flags.\n\n## The ID Chain\n\nMost `gh project` commands need internal IDs, not human-readable names. Resolve them in order:\n\n### 1. Project number\n\n```\ngh project list --owner \"@me\"\n```\n\nPlain tabular output. The first column is the project number.\n\n### 2. Project ID and field IDs\n\n```\ngh project field-list \u003Cnumber> --owner \"@me\" --format json\n```\n\nReturns all fields with their IDs and types. Single-select fields (like Status) include an `options` array with option IDs and names:\n\n```json\n{\n  \"id\": \"PVTSSF_...\",\n  \"name\": \"Status\",\n  \"options\": [\n    { \"id\": \"f75ad846\", \"name\": \"Backlog\" },\n    { \"id\": \"47fc9ee4\", \"name\": \"In Progress\" }\n  ],\n  \"type\": \"ProjectV2SingleSelectField\"\n}\n```\n\n### 3. Item ID\n\n```\ngh project item-list \u003Cnumber> --owner \"@me\"\n```\n\nThe last column is the item ID (`PVTI_...`).\n\n### 4. Project global ID\n\nNeeded for `item-edit`. Extract from `field-list` or `view` JSON output, or from the fourth column of `gh project list`.\n\n## Common Operations\n\n| Task | Command |\n|---|---|\n| List items | `gh project item-list \u003Cnum> --owner \"@me\"` |\n| Add issue\u002FPR | `gh project item-add \u003Cnum> --owner \"@me\" --url \u003Cissue-url>` |\n| Create draft | `gh project item-create \u003Cnum> --owner \"@me\" --title \"...\" --body \"...\"` |\n| Change status | `gh project item-edit --id \u003Citem-id> --project-id \u003Cproject-id> --field-id \u003Cfield-id> --single-select-option-id \u003Coption-id>` |\n| Edit text field | `gh project item-edit --id \u003Citem-id> --project-id \u003Cproject-id> --field-id \u003Cfield-id> --text \"...\"` |\n| Clear field | `gh project item-edit --id \u003Citem-id> --project-id \u003Cproject-id> --field-id \u003Cfield-id> --clear` |\n| View in browser | `gh project view \u003Cnum> --owner \"@me\" --web` |\n\n## Batching\n\nEach `gh project` call triggers a permission prompt. Minimize prompts by combining multiple operations into a single Bash call when possible — especially when resolving the ID chain or editing multiple items.\n\n## Gotchas\n\n- `--format json --jq` often fails because the top-level output is an array. Pipe to `jq` instead, or use `--format json` alone and parse with Python.\n- `item-edit` only updates one field per invocation. To change status and assignee, run it twice.\n- Single-select fields need `--single-select-option-id`, not `--text`. Check the field type in `field-list` output.\n- The `--owner` flag defaults to the authenticated user only for some commands. Pass `\"@me\"` explicitly.\n","# GitHub Projects\n\nQuick reference for `gh project` commands on personal projects (`@me`). Run `gh project \u003Ccommand> --help` for full flags.\n\n## The ID Chain\n\nMost `gh project` commands need internal IDs, not human-readable names. Resolve them in order:\n\n### 1. Project number\n\n```\ngh project list --owner \"@me\"\n```\n\nPlain tabular output. The first column is the project number.\n\n### 2. Project ID and field IDs\n\n```\ngh project field-list \u003Cnumber> --owner \"@me\" --format json\n```\n\nReturns all fields with their IDs and types. Single-select fields (like Status) include an `options` array with option IDs and names:\n\n```json\n{\n  \"id\": \"PVTSSF_...\",\n  \"name\": \"Status\",\n  \"options\": [\n    { \"id\": \"f75ad846\", \"name\": \"Backlog\" },\n    { \"id\": \"47fc9ee4\", \"name\": \"In Progress\" }\n  ],\n  \"type\": \"ProjectV2SingleSelectField\"\n}\n```\n\n### 3. Item ID\n\n```\ngh project item-list \u003Cnumber> --owner \"@me\"\n```\n\nThe last column is the item ID (`PVTI_...`).\n\n### 4. Project global ID\n\nNeeded for `item-edit`. Extract from `field-list` or `view` JSON output, or from the fourth column of `gh project list`.\n\n## Common Operations\n\n| Task | Command |\n|---|---|\n| List items | `gh project item-list \u003Cnum> --owner \"@me\"` |\n| Add issue\u002FPR | `gh project item-add \u003Cnum> --owner \"@me\" --url \u003Cissue-url>` |\n| Create draft | `gh project item-create \u003Cnum> --owner \"@me\" --title \"...\" --body \"...\"` |\n| Change status | `gh project item-edit --id \u003Citem-id> --project-id \u003Cproject-id> --field-id \u003Cfield-id> --single-select-option-id \u003Coption-id>` |\n| Edit text field | `gh project item-edit --id \u003Citem-id> --project-id \u003Cproject-id> --field-id \u003Cfield-id> --text \"...\"` |\n| Clear field | `gh project item-edit --id \u003Citem-id> --project-id \u003Cproject-id> --field-id \u003Cfield-id> --clear` |\n| View in browser | `gh project view \u003Cnum> --owner \"@me\" --web` |\n\n## Batching\n\nEach `gh project` call triggers a permission prompt. Minimize prompts by combining multiple operations into a single Bash call when possible — especially when resolving the ID chain or editing multiple items.\n\n## Gotchas\n\n- `--format json --jq` often fails because the top-level output is an array. Pipe to `jq` instead, or use `--format json` alone and parse with Python.\n- `item-edit` only updates one field per invocation. To change status and assignee, run it twice.\n- Single-select fields need `--single-select-option-id`, not `--text`. Check the field type in `field-list` output.\n- The `--owner` flag defaults to the authenticated user only for some commands. Pass `\"@me\"` explicitly.\n",{"name":5,"description":7},"main","54400d2fb3ebb925baf35311c647aaa31e7a5222","ai\u002Fskills\u002Fgh-projects",0,"https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Fkejadlen","https:\u002F\u002Fkejadlen.dev","2026-11-14 03:39:37",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add kejadlen\u002Fdotfiles --skill gh-projects",{"tool":38,"command":39},"bunx","bunx skills add kejadlen\u002Fdotfiles --skill gh-projects",{"tool":41,"command":42},"pnpm","pnpm dlx skills add kejadlen\u002Fdotfiles --skill gh-projects","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fgh-projects\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},"01M7DEVM19CB8GSCZV56PHA594","zoekt","Use when searching code across repositories — prefer zoekt over grep\u002Fripgrep for indexed code search. Covers indexing repos, search syntax, and query patterns.","https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fzoekt\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},"01M7DEVF10JKR56RSX30PZ8BNH","writing-for-accessibility","Use when writing documentation, alt text, diagrams, or any content that should be accessible to people with disabilities. Covers alt text, color contrast, inclusive language, and accessible visuals. Also use when reviewing documents for accessibility.","https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fwriting-for-accessibility\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},"01M7DEVA0Q63VMQWG32VN18XYB","writing-error-messages","Use when writing, reviewing, or improving error messages in code, CLI tools, APIs, or UIs. Covers identifying the cause, explaining the fix, and setting the right tone. Also use when error messages are vague, unactionable, or confusing.","https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fwriting-error-messages\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},"01M7DEV6GGF2H3FW3YCPWXRRT6","working-in-the-open","Use when making design decisions during implementation — routes rationale to the right venue (commits, task comments, code comments, or documentation) based on how durable the context needs to be","https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fworking-in-the-open\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},"01M7DEV2XTM37B9S0QV8X9SNSW","web-standards","Use when writing or reviewing HTML, CSS, or browser JavaScript — covers semantic markup, native platform features over libraries, Baseline browser support, accessibility and APCA contrast, and optional validation with vnu, axe, and Lighthouse","https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fweb-standards\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},"01M7DETYVQNPNGXC094DT0PTDF","web-design","Use when designing or building web UI, frontends, or styling — covers personal web design preferences, fluid layout, and Alpine.js","https:\u002F\u002Fgithub.com\u002Fkejadlen\u002Fdotfiles\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fweb-design\u002FSKILL.md",[],[]]