[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ACAT3JW1XZD3Z9EPP4H68M":3,"skill-same:01M6ACAT3JW1XZD3Z9EPP4H68M":73},{"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":49,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6ACAT3JW1XZD3Z9EPP4H68M","airflow-pr-draft-summary",null,"Draft Apache Airflow commit messages, PR titles and descriptions, or GitHub comments and reviews. Also use for release-note decisions when preparing a contribution.","apache\u002Fairflow","apache","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47359?v=4","01M6AC83E6K4FDKK7HZ8WNMQKE","The Apache Software Foundation","01M6ACADDFF6RHG1DBAJXFG7E5",47452,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fairflow-pr-draft-summary\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,9,37,38],"pr","pr draft summary","airflow","airflow pr draft summary","draft","summary","pr draft","commit messages","when","for","reviews","comments","contribution","use","decisions","github","messages","apache airflow","release","commit","2026-11-10 10:12:30",false,"---\nname: airflow-pr-draft-summary\ndescription: Draft Apache Airflow commit messages, PR titles and descriptions, or GitHub comments and reviews. Also use for release-note decisions when preparing a contribution.\n---\n\n\u003C!-- SPDX-License-Identifier: Apache-2.0\n     https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0 -->\n\n# Draft Airflow contribution text\n\nUse the sections below for the requested contribution text. For PR descriptions,\nfollow [the repository template](..\u002F..\u002F..\u002F.github\u002FPULL_REQUEST_TEMPLATE.md), keep\ntitles under 70 characters, and complete the Gen-AI checkbox and `Generated-by:`\nattribution when applicable. Report only checks actually executed and their outcomes.\nFor release-note decisions, also follow the newsfragment constraints in root\n[`AGENTS.md`](..\u002F..\u002F..\u002FAGENTS.md#coding-standards).\n\nWhen deciding whether an issue is needed or preparing authorized publication, use\n[Publish Airflow changes](..\u002Fairflow-publish-changes\u002FSKILL.md). Return the requested\ntext for a drafting request; drafting alone does not authorize posting.\n\n## Commit messages, PR titles and release notes\n\nWrite commit messages focused on user impact, not implementation details.\n\n- **Good:** `Fix airflow dags test command failure without serialized Dags`\n- **Good:** `UI: Fix Grid view not refreshing after task actions`\n- **Good:** `Update foo function`\n- **Bad:** `Initialize Dag bundles in CLI get_dag function`\n- **Bad:** `Update foo function (#12345)`\n- **Bad:** `fix(cli): dags test failure` — Airflow does not use Conventional Commits\n  (`feat:`, `fix:`, `chore:` …). Write the subject as plain prose. A `commit-msg`\n  prek hook (`check-no-conventional-commit-message`) rejects these, and CI checks\n  every commit of the PR.\n\n**Always run `prek install` before committing any code.** It installs the\n`commit-msg` hook (in addition to `pre-commit`) so the Conventional Commits guard\nruns locally; a clone that ran `prek install` before this hook existed must re-run\nit to pick up the new hook type.\n\nUse the **imperative mood** and a plain message — do **not** use Conventional Commits prefixes\n(`fix:`, `feat:`, `chore:`, `docs:`, `refactor:`, …). apache\u002Fairflow does not follow that\nconvention. (Area tags the project already uses, like `UI:` \u002F `API:` \u002F `Helm:`, are fine;\nConventional-Commit `type:` tokens are not.) The same rule applies to PR titles.\n\nDo not include an issue or PR number in the PR title. GitHub already appends\nthe actual PR number automatically when a PR is squash-merged (this is why\nAirflow's git history is full of titles like `... (#71609)`). Manually\nadding a number in the title duplicates that auto-added number, and readers\ncannot tell whether the number in the title refers to an issue or a PR —\nwhich is misleading in the commit history and changelog. Reference the\nissue only in the PR description, not the title\n\nThe commit message **body** should describe **why** the change is made — the motivation and\ncontext — and **never what** the change is. The diff already shows what changed; restating it in\nprose adds noise.\n\nFollow the newsfragment rules in root `AGENTS.md` (full text in `contributing-docs\u002F18_contribution_workflow.rst`). When an `airflow-core` change does need one:\n`echo \"Brief description\" > airflow-core\u002Fnewsfragments\u002F{PR_NUMBER}.significant.rst`\n\n- NEVER add Co-Authored-By with yourself as co-author of the commit. Agents cannot be authors, humans can be, Agents are assistants.\n\n## GitHub messages drafted by agents\n\nAnything an agent drafts that ends up posted to GitHub on the user's\naccount — PR \u002F issue comments, PR-level reviews, line-level review\ncomments, discussion replies — must end with an attribution footer.\nThe footer is required whether or not a human reviewed the draft\nfirst; what changes between the two cases is the wording.\n\nPlace the footer on its own paragraph at the end of the message,\nseparated from the body by a blank line and a horizontal rule. Use\nthe same agent name string used in `Generated-by:` on PR bodies (for\nexample, `Claude Code (Opus 4.7)`).\n\n- **Agent draft, posted without prior human review** (autonomous \u002F\n  routine work, scheduled triage, etc.):\n\n  ```\n  ---\n  Drafted-by: \u003CAgent Name and Version> (no human review before posting)\n  ```\n\n- **Agent draft, reviewed and approved by a human maintainer before\n  posting:**\n\n  ```\n  ---\n  Drafted-by: \u003CAgent Name and Version>; reviewed by @\u003Cgithub-handle> before posting\n  ```\n\n  The `@\u003Cgithub-handle>` is the human who actually read the draft\n  and said \"post it as-is\" (or similar). It is not the user the agent\n  is \"running on behalf of\" if no review took place — that case is the\n  first form, not this one.\n\nThis footer is in addition to, not a replacement for, any per-tool\ndisclosure rules (the PR body still keeps its own `Generated-by:`\nblock under the AI-disclosure checkbox; commit messages still follow\nthe no-self-as-co-author rule above). Do not skip the footer to\nshorten a message — attribution applies regardless of message length.\n\n### Do not tag individuals\n\nAI agents MUST NOT mention or tag individual contributors, committers,\nPMC members, or maintainers using GitHub usernames (e.g. `@user`) unless\nexplicitly instructed by a human reviewer. When suggesting who might be\nrelevant to a discussion, refer to roles, teams, code ownership\ninformation, labels, or components instead of individuals. This keeps\nnotification noise down and avoids pulling people into threads they have\nnot chosen to join.\n\nThe only exceptions are mentions a human has explicitly authorized —\nincluding the `@\u003Cgithub-handle>` in the `Drafted-by: … reviewed by\n@\u003Chandle>` footer above, which names the reviewer who approved the\nmessage — and replying within a thread to people already actively\nparticipating in that same PR\u002Fissue discussion.\n","\u003C!-- SPDX-License-Identifier: Apache-2.0\n     https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0 -->\n\n# Draft Airflow contribution text\n\nUse the sections below for the requested contribution text. For PR descriptions,\nfollow [the repository template](..\u002F..\u002F..\u002F.github\u002FPULL_REQUEST_TEMPLATE.md), keep\ntitles under 70 characters, and complete the Gen-AI checkbox and `Generated-by:`\nattribution when applicable. Report only checks actually executed and their outcomes.\nFor release-note decisions, also follow the newsfragment constraints in root\n[`AGENTS.md`](..\u002F..\u002F..\u002FAGENTS.md#coding-standards).\n\nWhen deciding whether an issue is needed or preparing authorized publication, use\n[Publish Airflow changes](..\u002Fairflow-publish-changes\u002FSKILL.md). Return the requested\ntext for a drafting request; drafting alone does not authorize posting.\n\n## Commit messages, PR titles and release notes\n\nWrite commit messages focused on user impact, not implementation details.\n\n- **Good:** `Fix airflow dags test command failure without serialized Dags`\n- **Good:** `UI: Fix Grid view not refreshing after task actions`\n- **Good:** `Update foo function`\n- **Bad:** `Initialize Dag bundles in CLI get_dag function`\n- **Bad:** `Update foo function (#12345)`\n- **Bad:** `fix(cli): dags test failure` — Airflow does not use Conventional Commits\n  (`feat:`, `fix:`, `chore:` …). Write the subject as plain prose. A `commit-msg`\n  prek hook (`check-no-conventional-commit-message`) rejects these, and CI checks\n  every commit of the PR.\n\n**Always run `prek install` before committing any code.** It installs the\n`commit-msg` hook (in addition to `pre-commit`) so the Conventional Commits guard\nruns locally; a clone that ran `prek install` before this hook existed must re-run\nit to pick up the new hook type.\n\nUse the **imperative mood** and a plain message — do **not** use Conventional Commits prefixes\n(`fix:`, `feat:`, `chore:`, `docs:`, `refactor:`, …). apache\u002Fairflow does not follow that\nconvention. (Area tags the project already uses, like `UI:` \u002F `API:` \u002F `Helm:`, are fine;\nConventional-Commit `type:` tokens are not.) The same rule applies to PR titles.\n\nDo not include an issue or PR number in the PR title. GitHub already appends\nthe actual PR number automatically when a PR is squash-merged (this is why\nAirflow's git history is full of titles like `... (#71609)`). Manually\nadding a number in the title duplicates that auto-added number, and readers\ncannot tell whether the number in the title refers to an issue or a PR —\nwhich is misleading in the commit history and changelog. Reference the\nissue only in the PR description, not the title\n\nThe commit message **body** should describe **why** the change is made — the motivation and\ncontext — and **never what** the change is. The diff already shows what changed; restating it in\nprose adds noise.\n\nFollow the newsfragment rules in root `AGENTS.md` (full text in `contributing-docs\u002F18_contribution_workflow.rst`). When an `airflow-core` change does need one:\n`echo \"Brief description\" > airflow-core\u002Fnewsfragments\u002F{PR_NUMBER}.significant.rst`\n\n- NEVER add Co-Authored-By with yourself as co-author of the commit. Agents cannot be authors, humans can be, Agents are assistants.\n\n## GitHub messages drafted by agents\n\nAnything an agent drafts that ends up posted to GitHub on the user's\naccount — PR \u002F issue comments, PR-level reviews, line-level review\ncomments, discussion replies — must end with an attribution footer.\nThe footer is required whether or not a human reviewed the draft\nfirst; what changes between the two cases is the wording.\n\nPlace the footer on its own paragraph at the end of the message,\nseparated from the body by a blank line and a horizontal rule. Use\nthe same agent name string used in `Generated-by:` on PR bodies (for\nexample, `Claude Code (Opus 4.7)`).\n\n- **Agent draft, posted without prior human review** (autonomous \u002F\n  routine work, scheduled triage, etc.):\n\n  ```\n  ---\n  Drafted-by: \u003CAgent Name and Version> (no human review before posting)\n  ```\n\n- **Agent draft, reviewed and approved by a human maintainer before\n  posting:**\n\n  ```\n  ---\n  Drafted-by: \u003CAgent Name and Version>; reviewed by @\u003Cgithub-handle> before posting\n  ```\n\n  The `@\u003Cgithub-handle>` is the human who actually read the draft\n  and said \"post it as-is\" (or similar). It is not the user the agent\n  is \"running on behalf of\" if no review took place — that case is the\n  first form, not this one.\n\nThis footer is in addition to, not a replacement for, any per-tool\ndisclosure rules (the PR body still keeps its own `Generated-by:`\nblock under the AI-disclosure checkbox; commit messages still follow\nthe no-self-as-co-author rule above). Do not skip the footer to\nshorten a message — attribution applies regardless of message length.\n\n### Do not tag individuals\n\nAI agents MUST NOT mention or tag individual contributors, committers,\nPMC members, or maintainers using GitHub usernames (e.g. `@user`) unless\nexplicitly instructed by a human reviewer. When suggesting who might be\nrelevant to a discussion, refer to roles, teams, code ownership\ninformation, labels, or components instead of individuals. This keeps\nnotification noise down and avoids pulling people into threads they have\nnot chosen to join.\n\nThe only exceptions are mentions a human has explicitly authorized —\nincluding the `@\u003Cgithub-handle>` in the `Drafted-by: … reviewed by\n@\u003Chandle>` footer above, which names the reviewer who approved the\nmessage — and replying within a thread to people already actively\nparticipating in that same PR\u002Fissue discussion.\n",{"name":5,"description":7},"main","f7e28eec7309f5700ca69ec226df41a5c58d5213",".agents\u002Fskills\u002Fairflow-pr-draft-summary",18346,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow","https:\u002F\u002Fairflow.apache.org\u002F","https:\u002F\u002Fgithub.com\u002Fapache","https:\u002F\u002Fwww.apache.org\u002F","2026-11-12 03:21:46",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add apache\u002Fairflow --skill airflow-pr-draft-summary",{"tool":59,"command":60},"bunx","bunx skills add apache\u002Fairflow --skill airflow-pr-draft-summary",{"tool":62,"command":63},"pnpm","pnpm dlx skills add apache\u002Fairflow --skill airflow-pr-draft-summary","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fairflow-pr-draft-summary\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Fscenarios.md","REFERENCE","参考文档",2593,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fmarkstream-install\u002Freferences\u002Fscenarios.md",[74,103,124,148,174,196],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":90,"publishedAt":39},"01M6ACBAC3S7GHPX3EB91CA2K5","sql-reporting","Conventions and review steps for writing analytics SQL against the warehouse. Use whenever the task involves querying tables, building a report, or aggregating metrics.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fblob\u002Fmain\u002Fproviders\u002Fcommon\u002Fai\u002Fsrc\u002Fairflow\u002Fproviders\u002Fcommon\u002Fai\u002Fexample_dags\u002Fskills\u002Fsql-reporting\u002FSKILL.md",[80,85],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[91,92,93,94,95,96,97,98,99,100,28,32,101,102],"sql reporting","sql","reporting","writing","review","report","analytics","metrics","tables","warehouse","task","conventions",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":39},"01M6ACB7P9C6TV0J1FGWW5HECF","aip-tracker","Track Airflow Improvement Proposal (AIP) implementation progress by comparing Confluence specs against codebase evidence. Use when asked to assess, report on, or compare AIP status.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fblob\u002Fmain\u002Fproviders\u002Fcommon\u002Fai\u002Fsrc\u002Fairflow\u002Fproviders\u002Fcommon\u002Fai\u002Fexample_dags\u002Fskills\u002Faip-tracker\u002FSKILL.md",[],[110,111,112,21,96,113,114,27,115,116,117,118,119,32,120,121,122,123],"aip tracker","aip","tracker","status","proposal","track","progress","evidence","improvement","assess","compare","codebase","implementation","confluence",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":39},"01M6ACB55GGWPTWFKM3BVQS4W5","upgrade-fab-provider","Upgrade the pinned Flask-AppBuilder (FAB) dependency in the Apache Airflow FAB provider (`providers\u002Ffab\u002F`). Bumps the exact `flask-appbuilder==` pin and its mirror constant, regenerates `uv.lock`, drives the `test_fab_alignment.py` drift tripwire, reviews the vendored security-manager `override.py` against the new upstream FAB, and conditionally re-vendors static assets \u002F DB migrations. Use when asked to \"upgrade FAB\", \"bump flask-appbuilder\", or move the FAB provider to a newer Flask-AppBuilder release.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fupgrade-fab-provider\u002FSKILL.md",[],[131,132,133,134,21,9,36,37,135,136,29,137,138,139,140,141,142,143,27,144,145,146,147],"upgrade fab provider","upgrade","provider","test","security","alignment","db","bump","static","re","move","new","uv","drift","tripwire","lock","dependency",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":157,"publishedAt":39},"01M6ACB2TYRC6SB5TQ351K2Q7Q","prepare-providers-documentation","Replace the manual commit-by-commit classification step in `breeze release-management prepare-provider-documentation` with AI-driven classification. For each provider with pending changes, analyze every PR (batched into one sub-agent per provider, not one per PR), pay special attention to potentially breaking changes by inspecting the actual diff, scope multi-provider PRs to the current provider's slice, ask the release manager when uncertain, and apply version bumps + changelog entries. Use during the regular provider release cycle as an alternative to the interactive breeze prompts.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprepare-providers-documentation\u002FSKILL.md",[154],{"categoryNo":155,"categoryName":156,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发",[158,159,160,161,19,38,162,37,163,164,165,27,166,167,168,169,170,171,172,173],"documentation","prepare providers documentation","prepare","Providers","changelog","scope","cycle","pay","ask","analyze","sub-agent","multi-provider","manager","as","attention","diff",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":39},"01M6ACAZ1M5SJQH1SHFFY7CXQF","airflow-translations","Add or update translations for the Apache Airflow UI. Guides through setting up locales, scaffolding translation files, translating with locale-specific guidelines, and validating results. Use when working with i18n tasks in airflow-core\u002Fsrc\u002Fairflow\u002Fui\u002Fpublic\u002Fi18n\u002Flocales\u002F.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fairflow-translations\u002FSKILL.md",[],[21,181,182,183,184,9,36,185,186,187,188,189,190,191,192,193,194,27,195,28],"airflow translations","core","guidelines","tasks","update","translation","scaffolding","up","files","guides","i18n","src","ui","add","locale",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":200,"categories":201,"keywords":202,"publishedAt":39},"01M6ACAWMSPCZCQMCJ0WPVTFQ9","airflow-publish-changes","Prepare or carry out authorized publication of Apache Airflow changes, including remote checks, pre-push verification, PR creation, and tracking deferred work. Also use when planning these steps or managing contribution issues.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fairflow-publish-changes\u002FSKILL.md",[],[21,203,204,205,206,19,207,208,209,9,36,160,210,211,27,212,213,214,32,31,215],"airflow publish changes","publish","changes","push","planning","issues","verification","creation","remote","work","pr creation","Publication","tracking"]