[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GKBBCEDV9JH182F0MVDJD7":3,"skill-same:01M6GKBBCEDV9JH182F0MVDJD7":105},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6GKBBCEDV9JH182F0MVDJD7","full-calendar",null,"Use when building, configuring, or debugging a FullCalendar instance — views, event sources, callbacks, drag-and-drop, or render hooks. Triggers on: \"FullCalendar\", \"event calendar\", \"dayGrid\"\u002F\"timeGrid\", \"events show on the wrong day\" (exclusive end dates), \"calendar not rendering\", \"dateClick or drag-drop not working\" (missing interaction plugin), a JSON event feed, or wiring a calendar into an HTMX-driven app.","dekoza\u002Foh-my-slop","dekoza","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F210980?v=4","01M6GK5KFK2SJQ364J2SR2P57S","Dominik Kozaczko","01M6GK5KP5PAA51JVTXYXHN66N",4,"Unlicense","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"full calendar","calendar","full","triggers","event","render","htmx","drag","sources","missing","interaction","app","plugin","end","drop","show","hooks","use","json","debugging","2026-11-10 10:12:30",false,"---\nname: full-calendar\ndescription: >\n  Use when building, configuring, or debugging a FullCalendar instance — views,\n  event sources, callbacks, drag-and-drop, or render hooks. Triggers on:\n  \"FullCalendar\", \"event calendar\", \"dayGrid\"\u002F\"timeGrid\", \"events show on the\n  wrong day\" (exclusive end dates), \"calendar not rendering\", \"dateClick or\n  drag-drop not working\" (missing interaction plugin), a JSON event feed, or\n  wiring a calendar into an HTMX-driven app.\n---\n\n# FullCalendar Skill\n\nComprehensive reference for FullCalendar v6 — a full-sized, drag-and-drop event calendar rendered entirely in JavaScript. FullCalendar is plugin-based, framework-agnostic (with optional React\u002FVue\u002FAngular connectors), and works naturally with server-rendered backends via JSON feeds.\n\n## Quick Start\n\n1. Identify what you need: initialization, event data, user interaction, or display customization.\n2. Open the matching reference file (see Reference Map below).\n3. Use the vanilla JS API — FullCalendar's `Calendar` class, not framework wrappers — unless the project explicitly uses React\u002FVue\u002FAngular connectors.\n4. For HTMX-driven apps, prefer the JSON feed event source and server-rendered content patterns described in `htmx-patterns.md`.\n\n## Critical Rules\n\n1. **`end` dates are exclusive.** An event ending `2024-09-03` spans through `2024-09-02` and stops before `2024-09-03`. This matches iCalendar RFC 5545 and Google Calendar API semantics. Agents and backend code producing event JSON must respect this — off-by-one end dates are the most common FullCalendar bug.\n2. **`interaction` plugin is required for `dateClick`, `selectable`, and drag\u002Fresize.** It is NOT required for `eventClick` or `eventMouseEnter`\u002F`eventMouseLeave`. The standard CDN bundle includes it, but ES6 users must import `@fullcalendar\u002Finteraction` and add it to `plugins: []`.\n3. **JSON feed dates must be ISO8601 strings or millisecond timestamps.** Native JS `Date` objects cannot be serialized to JSON. Do not send `new Date(...)` strings.\n4. **Dynamic option changes use `setOption()` \u002F `getOption()`.** But `events` and `eventSources` cannot be dynamically set — use `addEventSource()` \u002F `refetchEvents()` instead. `initialDate` and `initialView` cannot be set either — use `gotoDate()` and `changeView()`.\n5. **Non-standard event properties go to `extendedProps`.** During parsing, any property not in the standard set is moved into `event.extendedProps`. Access them there, not on the event root.\n6. **Content injection varies by environment.** In vanilla JS, `eventContent` returns text, `{ html }`, or `{ domNodes }`. React\u002FVue\u002FAngular connectors have their own content injection patterns — do not mix them.\n7. **`allDay` inference.** If `allDay` is not explicitly set, FullCalendar infers it from `start`\u002F`end` formats. ISO strings without time parts (e.g., `2024-09-01`) are treated as all-day; strings with time parts are not.\n8. **Toolbar values are space\u002Fcomma separated.** Space = gap between groups. Comma = adjacent buttons. Example: `'prev,next today'` puts prev\u002Fnext together, then a gap, then today.\n9. **Timezone shifts come from `timeZone` mismatches.** FullCalendar defaults to the browser's local timezone. ISO date strings with UTC offsets are converted into the calendar's zone; strings without offsets are taken as-is. Named timezones (anything beyond `local`\u002F`UTC`) require a timezone plugin — without one they silently degrade to UTC — and JSON feeds receive the active zone via `timeZoneParam` so the backend can respond consistently.\n\n## Core Concepts\n\nFullCalendar has a small set of concepts that recur everywhere:\n\n- **Calendar instance**: created with `new FullCalendar.Calendar(el, options)` (global bundle) or `new Calendar(el, { plugins: [...], ...options })` (ES6). Call `.render()` to mount.\n- **Plugins**: each view type and feature is a separate package. The standard CDN bundle (`fullcalendar\u002Findex.global.min.js`) includes core, interaction, daygrid, timegrid, list, and multimonth.\n- **Event sources**: where events come from — an array, a JSON feed URL, or a function. FullCalendar auto-fetches when the visible date range changes.\n- **Callbacks (handlers)**: functions you pass as options that fire on user interaction or lifecycle events (e.g., `eventClick`, `dateClick`, `datesSet`).\n- **Render hooks**: four-hook pattern (`*ClassNames`, `*Content`, `*DidMount`, `*WillUnmount`) for customizing the DOM of events, day cells, headers, etc.\n- **Content injection**: render hooks that accept `*Content` can return plain text, `{ html: '...' }`, `{ domNodes: [...] }`, or a function returning any of these.\n\n## HTMX Integration Context\n\nFullCalendar and HTMX serve complementary roles. FullCalendar handles the calendar grid, date math, and client-side interactions. The backend provides event data via JSON. The key integration points:\n\n- **Event data**: use a JSON feed URL that your backend serves. FullCalendar sends `start` and `end` query params automatically.\n- **Event interactions**: on `eventClick` or `dateClick`, trigger HTMX requests to load modals\u002Fpanels with server-rendered HTML, rather than building client-side forms.\n- **Navigation**: FullCalendar handles its own month\u002Fweek navigation. If you need the navigation to also update other page elements, use `datesSet` callback to trigger HTMX requests.\n- **Alternative approach**: for simpler calendars, skip FullCalendar entirely and render the grid server-side with HTMX-powered navigation (see `htmx-patterns.md` for this pattern).\n\n## Reference Map\n\n| File | Covers |\n|------|--------|\n| `references\u002Finitialization.md` | CDN setup, ES6 imports, Calendar constructor, plugin system, destroy\u002Fre-render |\n| `references\u002Fevents.md` | Event model, parsing rules, sources (array, JSON feed, function), Event Object API, event methods |\n| `references\u002Fviews.md` | Available views, view plugins, toolbar, navigation, date display, sizing |\n| `references\u002Fcallbacks.md` | All callbacks: dateClick, eventClick, select, eventDrop, eventResize, datesSet, loading, lifecycle |\n| `references\u002Fdisplay.md` | Event display options, render hooks, content injection, CSS customization, colors |\n| `references\u002Fhtmx-patterns.md` | HTMX+FullCalendar integration, server-side calendar grid alternative, modal patterns |\n| `references\u002FREFERENCE.md` | Cross-file index and quick lookup table |\n\n## Task Routing\n\n| Task | Start here |\n|------|-----------|\n| Add a calendar to a page | `initialization.md` |\n| Load events from backend API | `events.md` |\n| Handle clicks, selections, drag-drop | `callbacks.md` |\n| Customize event appearance | `display.md` |\n| Configure toolbar, switch views | `views.md` |\n| Integrate with HTMX backend | `htmx-patterns.md` |\n| Look up a specific option\u002Fmethod | `REFERENCE.md` |\n","# FullCalendar Skill\n\nComprehensive reference for FullCalendar v6 — a full-sized, drag-and-drop event calendar rendered entirely in JavaScript. FullCalendar is plugin-based, framework-agnostic (with optional React\u002FVue\u002FAngular connectors), and works naturally with server-rendered backends via JSON feeds.\n\n## Quick Start\n\n1. Identify what you need: initialization, event data, user interaction, or display customization.\n2. Open the matching reference file (see Reference Map below).\n3. Use the vanilla JS API — FullCalendar's `Calendar` class, not framework wrappers — unless the project explicitly uses React\u002FVue\u002FAngular connectors.\n4. For HTMX-driven apps, prefer the JSON feed event source and server-rendered content patterns described in `htmx-patterns.md`.\n\n## Critical Rules\n\n1. **`end` dates are exclusive.** An event ending `2024-09-03` spans through `2024-09-02` and stops before `2024-09-03`. This matches iCalendar RFC 5545 and Google Calendar API semantics. Agents and backend code producing event JSON must respect this — off-by-one end dates are the most common FullCalendar bug.\n2. **`interaction` plugin is required for `dateClick`, `selectable`, and drag\u002Fresize.** It is NOT required for `eventClick` or `eventMouseEnter`\u002F`eventMouseLeave`. The standard CDN bundle includes it, but ES6 users must import `@fullcalendar\u002Finteraction` and add it to `plugins: []`.\n3. **JSON feed dates must be ISO8601 strings or millisecond timestamps.** Native JS `Date` objects cannot be serialized to JSON. Do not send `new Date(...)` strings.\n4. **Dynamic option changes use `setOption()` \u002F `getOption()`.** But `events` and `eventSources` cannot be dynamically set — use `addEventSource()` \u002F `refetchEvents()` instead. `initialDate` and `initialView` cannot be set either — use `gotoDate()` and `changeView()`.\n5. **Non-standard event properties go to `extendedProps`.** During parsing, any property not in the standard set is moved into `event.extendedProps`. Access them there, not on the event root.\n6. **Content injection varies by environment.** In vanilla JS, `eventContent` returns text, `{ html }`, or `{ domNodes }`. React\u002FVue\u002FAngular connectors have their own content injection patterns — do not mix them.\n7. **`allDay` inference.** If `allDay` is not explicitly set, FullCalendar infers it from `start`\u002F`end` formats. ISO strings without time parts (e.g., `2024-09-01`) are treated as all-day; strings with time parts are not.\n8. **Toolbar values are space\u002Fcomma separated.** Space = gap between groups. Comma = adjacent buttons. Example: `'prev,next today'` puts prev\u002Fnext together, then a gap, then today.\n9. **Timezone shifts come from `timeZone` mismatches.** FullCalendar defaults to the browser's local timezone. ISO date strings with UTC offsets are converted into the calendar's zone; strings without offsets are taken as-is. Named timezones (anything beyond `local`\u002F`UTC`) require a timezone plugin — without one they silently degrade to UTC — and JSON feeds receive the active zone via `timeZoneParam` so the backend can respond consistently.\n\n## Core Concepts\n\nFullCalendar has a small set of concepts that recur everywhere:\n\n- **Calendar instance**: created with `new FullCalendar.Calendar(el, options)` (global bundle) or `new Calendar(el, { plugins: [...], ...options })` (ES6). Call `.render()` to mount.\n- **Plugins**: each view type and feature is a separate package. The standard CDN bundle (`fullcalendar\u002Findex.global.min.js`) includes core, interaction, daygrid, timegrid, list, and multimonth.\n- **Event sources**: where events come from — an array, a JSON feed URL, or a function. FullCalendar auto-fetches when the visible date range changes.\n- **Callbacks (handlers)**: functions you pass as options that fire on user interaction or lifecycle events (e.g., `eventClick`, `dateClick`, `datesSet`).\n- **Render hooks**: four-hook pattern (`*ClassNames`, `*Content`, `*DidMount`, `*WillUnmount`) for customizing the DOM of events, day cells, headers, etc.\n- **Content injection**: render hooks that accept `*Content` can return plain text, `{ html: '...' }`, `{ domNodes: [...] }`, or a function returning any of these.\n\n## HTMX Integration Context\n\nFullCalendar and HTMX serve complementary roles. FullCalendar handles the calendar grid, date math, and client-side interactions. The backend provides event data via JSON. The key integration points:\n\n- **Event data**: use a JSON feed URL that your backend serves. FullCalendar sends `start` and `end` query params automatically.\n- **Event interactions**: on `eventClick` or `dateClick`, trigger HTMX requests to load modals\u002Fpanels with server-rendered HTML, rather than building client-side forms.\n- **Navigation**: FullCalendar handles its own month\u002Fweek navigation. If you need the navigation to also update other page elements, use `datesSet` callback to trigger HTMX requests.\n- **Alternative approach**: for simpler calendars, skip FullCalendar entirely and render the grid server-side with HTMX-powered navigation (see `htmx-patterns.md` for this pattern).\n\n## Reference Map\n\n| File | Covers |\n|------|--------|\n| `references\u002Finitialization.md` | CDN setup, ES6 imports, Calendar constructor, plugin system, destroy\u002Fre-render |\n| `references\u002Fevents.md` | Event model, parsing rules, sources (array, JSON feed, function), Event Object API, event methods |\n| `references\u002Fviews.md` | Available views, view plugins, toolbar, navigation, date display, sizing |\n| `references\u002Fcallbacks.md` | All callbacks: dateClick, eventClick, select, eventDrop, eventResize, datesSet, loading, lifecycle |\n| `references\u002Fdisplay.md` | Event display options, render hooks, content injection, CSS customization, colors |\n| `references\u002Fhtmx-patterns.md` | HTMX+FullCalendar integration, server-side calendar grid alternative, modal patterns |\n| `references\u002FREFERENCE.md` | Cross-file index and quick lookup table |\n\n## Task Routing\n\n| Task | Start here |\n|------|-----------|\n| Add a calendar to a page | `initialization.md` |\n| Load events from backend API | `events.md` |\n| Handle clicks, selections, drag-drop | `callbacks.md` |\n| Customize event appearance | `display.md` |\n| Configure toolbar, switch views | `views.md` |\n| Integrate with HTMX backend | `htmx-patterns.md` |\n| Look up a specific option\u002Fmethod | `REFERENCE.md` |\n",{"name":5,"description":7},"main","8c687fa2c077e1cd3ff8e5b2912c28fd443bc675","skills\u002Freference\u002Ffull-calendar",0,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop","https:\u002F\u002Fgithub.com\u002Fdekoza","https:\u002F\u002Fqoto.org\u002F@minder","Plz send BTC: 32UQpSVbcYXdfZnbyPuPvYi7rXvHcueqi1","2026-10-28 00:52:41",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add dekoza\u002Foh-my-slop --skill full-calendar",{"tool":59,"command":60},"bunx","bunx skills add dekoza\u002Foh-my-slop --skill full-calendar",{"tool":62,"command":63},"pnpm","pnpm dlx skills add dekoza\u002Foh-my-slop --skill full-calendar","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002FSKILL.md",true,[67,73,77,81,85,89,93,97,101],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"evals\u002Fevals.json","REFERENCE","参考文档",2822,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Fevals\u002Fevals.json",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"evals\u002Ftrigger-evals.json",3608,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Fevals\u002Ftrigger-evals.json",{"path":78,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fcallbacks.md",7571,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Freferences\u002Fcallbacks.md",{"path":82,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fdisplay.md",7129,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Freferences\u002Fdisplay.md",{"path":86,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fevents.md",7207,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Freferences\u002Fevents.md",{"path":90,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fhtmx-patterns.md",9629,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Freferences\u002Fhtmx-patterns.md",{"path":94,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Finitialization.md",4447,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Freferences\u002Finitialization.md",{"path":98,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002FREFERENCE.md",5022,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Freferences\u002FREFERENCE.md",{"path":102,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fviews.md",7052,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Ffull-calendar\u002Freferences\u002Fviews.md",[106,132,156,172,186,211],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":39},"01M6GKGSV5GC23S7CZ8XMXQF7C","wizard","Generate an interactive bash wizard that walks a human through a manual procedure — third-party setup, credential provisioning, a one-off migration — opening URLs, capturing values, confirming each step, and writing .env files and CI secrets (GitHub and Gitea\u002FForgejo Actions).","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fwizard\u002FSKILL.md",[],[108,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131],"true","interactive","manual","gitea","env","third-party","human","credential","files","migration","Bash","secrets","provisioning","ci","actions","generate","setup","github","writing",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":136,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":144,"publishedAt":39},"01M6GKFC9YYQ4CC6N7YAW7BWW1","restore-test-pyramid","Analyze the project's E2E suite and push every assertion that doesn't need a real browser down to a faster integration or unit test, proving each migration honest before thinning E2E.","MIT","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Frestore-test-pyramid\u002FSKILL.md",[139],{"categoryNo":140,"categoryName":141,"taxonomyType":142,"taxonomyTypeDesc":143},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[145,146,147,148,149,122,150,151,152,153,154,155,113],"restore test pyramid","test","restore","real browser","analyze","push","project","unit","e2e","integration","browser",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":39},"01M6GKEW0YH8ZSSN1PT543TDNZ","ponytail-debt","Harvest SHORTCUT markers from the codebase and report them grouped by file, flagging any missing upgrade paths.","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fponytail-debt\u002FSKILL.md",[],[163,164,28,113,165,166,167,168,169,170,171],"ponytail","ponytail debt","shortcut","paths","markers","upgrade","file","report","harvest",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":136,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":39},"01M6GKE8R93K0Z9XCM0MVCMS82","humanify","Repair an inherited or human-blocked ticket for agent implementation, or finish its explicit human-only outcome.","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fhumanify\u002FSKILL.md",[],[174,179,113,180,181,182,119,183,184,185],"finish","ticket","agent implementation","repair","implementation","only","outcome",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":136,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":39},"01M6GKDQYP2QQZCVE34AAJW7KC","fix-pr","Repair an existing pull request's review findings and target-branch conflicts, verify the result, and update the same open PR.","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Ffix-pr\u002FSKILL.md",[],[193,194,195,196,197,198,199,200,201,202,203,204,205,206,113,207,208,182,209,210],"pr","fix","fix pr","testing","open","verify","pull","update","pull request","merge","workflow","tdd","review","branch","merge-conflicts","review findings","conflicts","discipline",{"skillNo":212,"name":213,"nameZh":6,"description":214,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":215,"categories":216,"keywords":217,"publishedAt":39},"01M6GKDMR2V617S1V8APDT4R2B","feature-milestones","Reconstruct a fragmented backlog as finishable feature milestones with explicit delivery boundaries and an approval-gated tracker update.","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Ffeature-milestones\u002FSKILL.md",[],[218,219,200,113,220,221,222,223,224,225,226],"feature","feature milestones","with","as","delivery","backlog","gated","tracker","approval"]