@waoooo/claude-skills 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -0
- package/package.json +28 -0
- package/registry.json +431 -0
- package/skills/acceptance-review/SKILL.md +537 -0
- package/skills/all-plan/SKILL.md +19 -0
- package/skills/all-plan/references/flow.md +750 -0
- package/skills/api-docs-generate/SKILL.md +204 -0
- package/skills/api-docs-generate/assets/templates/api.mdx +140 -0
- package/skills/api-docs-generate/scripts/generate-api-docs.ts +308 -0
- package/skills/ask/SKILL.md +42 -0
- package/skills/autonew/SKILL.md +34 -0
- package/skills/capability-analyze/SKILL.md +300 -0
- package/skills/capability-analyze/scripts/analyze-capabilities.ts +531 -0
- package/skills/capability-docs-generate/SKILL.md +155 -0
- package/skills/capability-docs-generate/assets/templates/capability.mdx +271 -0
- package/skills/capability-docs-generate/scripts/generate-capability-docs.ts +358 -0
- package/skills/capability-tree-query/SKILL.md +112 -0
- package/skills/capability-tree-query/scripts/build-capability-tree.ts +402 -0
- package/skills/changelog-generator/SKILL.md +104 -0
- package/skills/continue/SKILL.md +39 -0
- package/skills/continue/agents/openai.yaml +3 -0
- package/skills/creating-skills/SKILL.md +158 -0
- package/skills/creating-skills/references/official_best_practices.md +128 -0
- package/skills/creating-skills/references/skill_examples.md +199 -0
- package/skills/docx/LICENSE.txt +30 -0
- package/skills/docx/SKILL.md +197 -0
- package/skills/docx/docx-js.md +350 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/docx/ooxml/scripts/pack.py +159 -0
- package/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/skills/docx/ooxml/scripts/validate.py +69 -0
- package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/docx/ooxml.md +610 -0
- package/skills/docx/scripts/__init__.py +1 -0
- package/skills/docx/scripts/document.py +1276 -0
- package/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/docx/scripts/utilities.py +374 -0
- package/skills/git-branch-create/SKILL.md +170 -0
- package/skills/git-branch-merge/SKILL.md +176 -0
- package/skills/git-commit/SKILL.md +56 -0
- package/skills/git-commit/references/commit_examples.md +311 -0
- package/skills/github-actions-trigger/SKILL.md +367 -0
- package/skills/github-issue-create/SKILL.md +294 -0
- package/skills/github-pr-creation/SKILL.md +137 -0
- package/skills/github-pr-creation/references/pr_templates.md +187 -0
- package/skills/github-pr-merge/SKILL.md +112 -0
- package/skills/github-pr-review/SKILL.md +110 -0
- package/skills/github-pr-review/references/severity_guide.md +168 -0
- package/skills/job-create/SKILL.md +294 -0
- package/skills/job-create/scripts/create-job.ts +105 -0
- package/skills/job-workflow/SKILL.md +212 -0
- package/skills/keyword-extract/SKILL.md +229 -0
- package/skills/mcp-builder/LICENSE.txt +202 -0
- package/skills/mcp-builder/SKILL.md +236 -0
- package/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/mdx-to-openspec/SKILL.md +827 -0
- package/skills/mdx-to-openspec/scripts/mdx-to-openspec.ts +320 -0
- package/skills/mounted/SKILL.md +20 -0
- package/skills/multi-model-review/SKILL.md +459 -0
- package/skills/notion-automation/SKILL.md +215 -0
- package/skills/openspec-review/SKILL.md +513 -0
- package/skills/pdf/LICENSE.txt +30 -0
- package/skills/pdf/SKILL.md +294 -0
- package/skills/pdf/forms.md +205 -0
- package/skills/pdf/reference.md +612 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/pdf/scripts/create_validation_image.py +41 -0
- package/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/skills/pend/SKILL.md +33 -0
- package/skills/ping/SKILL.md +39 -0
- package/skills/pptx/LICENSE.txt +30 -0
- package/skills/pptx/SKILL.md +484 -0
- package/skills/pptx/html2pptx.md +625 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/pptx/ooxml.md +427 -0
- package/skills/pptx/scripts/html2pptx.js +979 -0
- package/skills/pptx/scripts/inventory.py +1020 -0
- package/skills/pptx/scripts/rearrange.py +231 -0
- package/skills/pptx/scripts/replace.py +385 -0
- package/skills/pptx/scripts/thumbnail.py +450 -0
- package/skills/progress-update/SKILL.md +394 -0
- package/skills/progress-update/scripts/update-progress.ts +221 -0
- package/skills/release-automation/SKILL.md +306 -0
- package/skills/requirement-parse/SKILL.md +212 -0
- package/skills/requirement-parse/scripts/infer-builder-config.ts +346 -0
- package/skills/requirement-parse/scripts/merge-requirements.ts +228 -0
- package/skills/requirement-parse/scripts/parse-docs.ts +206 -0
- package/skills/requirement-parse/scripts/parse-openspec.ts +168 -0
- package/skills/roadmap-docs-generate/SKILL.md +483 -0
- package/skills/roadmap-docs-generate/assets/templates/ROADMAP.mdx +75 -0
- package/skills/roadmap-docs-generate/assets/templates/ROADMAP.mdx.template +330 -0
- package/skills/roadmap-docs-generate/assets/templates/TODO.mdx +56 -0
- package/skills/roadmap-docs-generate/assets/templates/TODO.mdx.template +363 -0
- package/skills/roadmap-docs-generate/scripts/json-to-mdx.ts +445 -0
- package/skills/roadmap-docs-generate/scripts/json-to-mdx.ts.backup +411 -0
- package/skills/roadmap-generate/SKILL.md +396 -0
- package/skills/roadmap-generate/scripts/generate-roadmap.ts +496 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/SKILL.md +356 -0
- package/skills/skill-creator/references/output-patterns.md +82 -0
- package/skills/skill-creator/references/workflows.md +28 -0
- package/skills/skill-creator/scripts/init_skill.py +303 -0
- package/skills/skill-creator/scripts/package_skill.py +110 -0
- package/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/skills/spec-generate/SKILL.md +408 -0
- package/skills/spec-generate/scripts/generate-specs.ts +538 -0
- package/skills/spec-generate/scripts/generate-tasks.ts +174 -0
- package/skills/specs-review/SKILL.md +370 -0
- package/skills/task-execute/SKILL.md +399 -0
- package/skills/task-update-status/SKILL.md +349 -0
- package/skills/task-update-status/scripts/update-task-status.ts +192 -0
- package/skills/task-verify/SKILL.md +407 -0
- package/skills/ui-ux-pro-max/SKILL.md +386 -0
- package/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/skills/vercel-automation/SKILL.md +226 -0
- package/skills/webapp-testing/LICENSE.txt +202 -0
- package/skills/webapp-testing/SKILL.md +96 -0
- package/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/webapp-testing/scripts/with_server.py +106 -0
- package/skills/worktree-manager/SKILL.md +725 -0
- package/skills/worktree-manager/config.json +15 -0
- package/skills/worktree-manager/scripts/allocate-ports.sh +100 -0
- package/skills/worktree-manager/scripts/cleanup.sh +185 -0
- package/skills/worktree-manager/scripts/launch-agent.sh +155 -0
- package/skills/worktree-manager/scripts/register.sh +125 -0
- package/skills/worktree-manager/scripts/release-ports.sh +48 -0
- package/skills/worktree-manager/scripts/status.sh +169 -0
- package/skills/worktree-manager/scripts/sync.sh +168 -0
- package/skills/worktree-manager/templates/worktree.json +23 -0
- package/skills/xlsx/LICENSE.txt +30 -0
- package/skills/xlsx/SKILL.md +289 -0
- package/skills/xlsx/recalc.py +178 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-pr-creation
|
|
3
|
+
description: Creates GitHub Pull Requests with automated validation and task tracking. Use when user wants to create PR, open pull request, submit for review, or check if ready for PR. Analyzes commits, validates task completion, generates Conventional Commits title and description, suggests labels. NOTE - for merging existing PRs, use github-pr-merge instead.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GitHub PR creation
|
|
7
|
+
|
|
8
|
+
Creates Pull Requests with task validation, test execution, and Conventional Commits formatting.
|
|
9
|
+
|
|
10
|
+
## Current state
|
|
11
|
+
|
|
12
|
+
!`git rev-parse --abbrev-ref HEAD 2>/dev/null`
|
|
13
|
+
!`git log @{u}..HEAD --oneline 2>/dev/null || echo "(no upstream tracking)"`
|
|
14
|
+
|
|
15
|
+
## Core workflow
|
|
16
|
+
|
|
17
|
+
### 1. Confirm target branch
|
|
18
|
+
|
|
19
|
+
**ALWAYS ask user before proceeding:**
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Creating PR from [current-branch] to [target-branch]. Correct?
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Branch flow | Typical target |
|
|
26
|
+
|-------------|---------------|
|
|
27
|
+
| feature/* | develop |
|
|
28
|
+
| fix/* | develop |
|
|
29
|
+
| hotfix/* | main/master |
|
|
30
|
+
| develop | main/master |
|
|
31
|
+
|
|
32
|
+
### 2. Search for task documentation
|
|
33
|
+
|
|
34
|
+
Look for task/spec files that describe what this PR should accomplish. Common locations by tool:
|
|
35
|
+
|
|
36
|
+
| Tool/Convention | Path |
|
|
37
|
+
|-----------------|------|
|
|
38
|
+
| AWS Kiro | `.kiro/specs/*/tasks.md` |
|
|
39
|
+
| Cursor | `.cursor/rules/*.md`, `.cursorrules` |
|
|
40
|
+
| Trae | `.trae/rules/*.md` |
|
|
41
|
+
| GitHub Issues | `gh issue list --assignee @me --state open` |
|
|
42
|
+
| Generic | `docs/specs/`, `specs/`, `tasks.md`, `TODO.md` |
|
|
43
|
+
|
|
44
|
+
Extract task IDs, titles, descriptions, and requirements references when found.
|
|
45
|
+
|
|
46
|
+
### 3. Analyze commits
|
|
47
|
+
|
|
48
|
+
For each commit on this branch, identify type, scope, task references, and breaking changes. Map commits to documented tasks when task files exist.
|
|
49
|
+
|
|
50
|
+
### 4. Verify task completion
|
|
51
|
+
|
|
52
|
+
If task documentation exists:
|
|
53
|
+
|
|
54
|
+
1. Identify main task from branch name (e.g., `feature/task-2-*` -> Task 2)
|
|
55
|
+
2. Find all sub-tasks (e.g., Task 2.1, 2.2, 2.3)
|
|
56
|
+
3. Check which sub-tasks are referenced in commits
|
|
57
|
+
4. Report missing sub-tasks
|
|
58
|
+
|
|
59
|
+
**If tasks incomplete**, STOP and show status:
|
|
60
|
+
```
|
|
61
|
+
Task 2 INCOMPLETE: 1/3 sub-tasks missing
|
|
62
|
+
- Task 2.1: done
|
|
63
|
+
- Task 2.2: done
|
|
64
|
+
- Task 2.3: MISSING
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Ask user whether to complete missing tasks or proceed anyway.
|
|
68
|
+
|
|
69
|
+
### 5. Run tests
|
|
70
|
+
|
|
71
|
+
Run the project test suite. Tests **MUST** pass before creating PR.
|
|
72
|
+
|
|
73
|
+
### 6. Determine PR type and generate title
|
|
74
|
+
|
|
75
|
+
| Branch flow | Title prefix |
|
|
76
|
+
|-------------|-------------|
|
|
77
|
+
| feature/* -> develop | `feat(scope):` |
|
|
78
|
+
| fix/* -> develop | `fix(scope):` |
|
|
79
|
+
| hotfix/* -> main | `hotfix(scope):` |
|
|
80
|
+
| develop -> main | `release:` |
|
|
81
|
+
| refactor/* -> develop | `refactor(scope):` |
|
|
82
|
+
|
|
83
|
+
**Title format**: `<type>(<scope>): <description>`
|
|
84
|
+
- Type: dominant commit type (feat > fix > refactor)
|
|
85
|
+
- Scope: most common scope from commits (kebab-case)
|
|
86
|
+
- Description: imperative, lowercase, no period, max 50 chars
|
|
87
|
+
|
|
88
|
+
### 7. Generate PR body
|
|
89
|
+
|
|
90
|
+
Use the appropriate template from `references/pr_templates.md` based on PR type and populate with gathered data.
|
|
91
|
+
|
|
92
|
+
### 8. Suggest labels
|
|
93
|
+
|
|
94
|
+
**ALWAYS check available labels first:**
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
gh label list
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Match commit types to available project labels. The project may use different names than standard (e.g., "feature" instead of "enhancement").
|
|
101
|
+
|
|
102
|
+
| Commit type | Common label names |
|
|
103
|
+
|-------------|-------------------|
|
|
104
|
+
| feat | feature, enhancement |
|
|
105
|
+
| fix | bug, bugfix |
|
|
106
|
+
| refactor | refactoring, tech-debt |
|
|
107
|
+
| docs | documentation |
|
|
108
|
+
| ci | ci/cd, infrastructure |
|
|
109
|
+
| security | security |
|
|
110
|
+
| hotfix | urgent, priority:high |
|
|
111
|
+
|
|
112
|
+
**If no matching label exists**: suggest creating one. The user may have removed default labels, so offering to add relevant ones is appropriate.
|
|
113
|
+
|
|
114
|
+
### 9. Create PR
|
|
115
|
+
|
|
116
|
+
**ALWAYS show title, body, and labels for user approval first.**
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
gh pr create --title "[title]" --body "$(cat <<'EOF'
|
|
120
|
+
[body content]
|
|
121
|
+
EOF
|
|
122
|
+
)" --base [base_branch] --label [labels]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Important rules
|
|
126
|
+
|
|
127
|
+
- **ALWAYS** confirm target branch with user
|
|
128
|
+
- **ALWAYS** run tests before creating PR
|
|
129
|
+
- **ALWAYS** show PR content for approval before creating
|
|
130
|
+
- **ALWAYS** check available labels with `gh label list` before suggesting
|
|
131
|
+
- **ALWAYS** use HEREDOC for body to preserve formatting
|
|
132
|
+
- **NEVER** create PR without user confirmation
|
|
133
|
+
- **NEVER** modify repository files (read-only analysis)
|
|
134
|
+
|
|
135
|
+
## References
|
|
136
|
+
|
|
137
|
+
- `references/pr_templates.md` - PR body templates for all types (feature, release, bugfix, hotfix, refactoring, docs, CI/CD)
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# PR templates
|
|
2
|
+
|
|
3
|
+
Select the template matching the PR type.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Feature (feature/* -> develop)
|
|
8
|
+
|
|
9
|
+
**Title**: `feat(<scope>): <description>`
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
## What
|
|
13
|
+
- [List of implemented features/components]
|
|
14
|
+
- [Main functionality highlights]
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
- [Business/operational impact]
|
|
18
|
+
- [Pain points resolved]
|
|
19
|
+
|
|
20
|
+
## Details
|
|
21
|
+
### Task X.Y: [Task title]
|
|
22
|
+
- [Implementation detail 1]
|
|
23
|
+
- [Implementation detail 2]
|
|
24
|
+
- **Requirements**: X, Y, Z
|
|
25
|
+
|
|
26
|
+
## Checklist
|
|
27
|
+
- [ ] Main feature implemented
|
|
28
|
+
- [ ] Tests written and passing
|
|
29
|
+
- [ ] Documentation updated
|
|
30
|
+
- [ ] Code review ready
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Release (develop -> main)
|
|
36
|
+
|
|
37
|
+
**Title**: `release: version X.Y with [main features]`
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
## What
|
|
41
|
+
This release includes:
|
|
42
|
+
- [Feature set 1 - Task N]
|
|
43
|
+
- [Feature set 2 - Task M]
|
|
44
|
+
|
|
45
|
+
## Why
|
|
46
|
+
[Release motivation, milestone reached]
|
|
47
|
+
|
|
48
|
+
## Details
|
|
49
|
+
### Task N: [Feature name] (COMPLETE)
|
|
50
|
+
- **Task N.1**: [Description]
|
|
51
|
+
- **Task N.2**: [Description]
|
|
52
|
+
- **Requirements**: X, Y, Z
|
|
53
|
+
|
|
54
|
+
## Testing
|
|
55
|
+
- Coverage: XX%
|
|
56
|
+
- Integration tests: pass/fail
|
|
57
|
+
|
|
58
|
+
## Checklist
|
|
59
|
+
- [ ] All tasks completed
|
|
60
|
+
- [ ] No breaking changes (or documented)
|
|
61
|
+
- [ ] Migration guide prepared (if needed)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Bugfix (fix/* -> develop)
|
|
67
|
+
|
|
68
|
+
**Title**: `fix(<scope>): <description>`
|
|
69
|
+
|
|
70
|
+
```markdown
|
|
71
|
+
## What
|
|
72
|
+
Fix for [problem description]
|
|
73
|
+
|
|
74
|
+
## Problem
|
|
75
|
+
[Bug description, how it manifests, impact]
|
|
76
|
+
|
|
77
|
+
## Solution
|
|
78
|
+
[Explanation of implemented solution]
|
|
79
|
+
|
|
80
|
+
## Testing
|
|
81
|
+
- [How the fix was tested]
|
|
82
|
+
- [Regression tests added]
|
|
83
|
+
|
|
84
|
+
## Checklist
|
|
85
|
+
- [ ] Bug resolved
|
|
86
|
+
- [ ] Regression tests added
|
|
87
|
+
- [ ] No side effects introduced
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Hotfix (hotfix/* -> main)
|
|
93
|
+
|
|
94
|
+
**Title**: `hotfix(<scope>): <critical fix>`
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
## HOTFIX
|
|
98
|
+
|
|
99
|
+
### Issue
|
|
100
|
+
[Description of critical production issue]
|
|
101
|
+
|
|
102
|
+
### Root cause
|
|
103
|
+
[Identified cause]
|
|
104
|
+
|
|
105
|
+
### Fix
|
|
106
|
+
[Implemented solution]
|
|
107
|
+
|
|
108
|
+
### Impact
|
|
109
|
+
- Affected users: [estimate]
|
|
110
|
+
- Downtime: [if applicable]
|
|
111
|
+
|
|
112
|
+
### Rollback plan
|
|
113
|
+
[Rollback plan if needed]
|
|
114
|
+
|
|
115
|
+
## Checklist
|
|
116
|
+
- [ ] Fix tested in staging
|
|
117
|
+
- [ ] Approval for urgent deploy
|
|
118
|
+
- [ ] Post-deploy monitoring planned
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Refactoring (refactor/* -> develop)
|
|
124
|
+
|
|
125
|
+
**Title**: `refactor(<scope>): <description>`
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
## What
|
|
129
|
+
Refactoring of [component/module]
|
|
130
|
+
|
|
131
|
+
## Why
|
|
132
|
+
- [Motivation: performance, maintainability, technical debt]
|
|
133
|
+
|
|
134
|
+
## Changes
|
|
135
|
+
- [Change 1]
|
|
136
|
+
- [Change 2]
|
|
137
|
+
|
|
138
|
+
## Impact
|
|
139
|
+
- **Functional**: None (behavior unchanged)
|
|
140
|
+
- **Performance**: [expected improvements]
|
|
141
|
+
- **Maintainability**: [benefits]
|
|
142
|
+
|
|
143
|
+
## Checklist
|
|
144
|
+
- [ ] Functional behavior unchanged
|
|
145
|
+
- [ ] Existing tests passing
|
|
146
|
+
- [ ] New tests added (if needed)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Documentation (docs/*)
|
|
152
|
+
|
|
153
|
+
**Title**: `docs(<scope>): <description>`
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
## What
|
|
157
|
+
Documentation update for [area]
|
|
158
|
+
|
|
159
|
+
## Changes
|
|
160
|
+
- [Document 1]: [change type]
|
|
161
|
+
- [Document 2]: [change type]
|
|
162
|
+
|
|
163
|
+
## Motivation
|
|
164
|
+
[Why this documentation is needed]
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## CI/CD and infrastructure
|
|
170
|
+
|
|
171
|
+
**Title**: `ci(<scope>): <description>` or `chore(<scope>): <description>`
|
|
172
|
+
|
|
173
|
+
```markdown
|
|
174
|
+
## What
|
|
175
|
+
[Pipeline/infrastructure change]
|
|
176
|
+
|
|
177
|
+
## Changes
|
|
178
|
+
- [Change 1]
|
|
179
|
+
- [Change 2]
|
|
180
|
+
|
|
181
|
+
## Impact
|
|
182
|
+
- Build time: [variation]
|
|
183
|
+
- Deploy process: [variation]
|
|
184
|
+
|
|
185
|
+
## Testing
|
|
186
|
+
[How it was verified]
|
|
187
|
+
```
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-pr-merge
|
|
3
|
+
description: Merges GitHub Pull Requests after validating pre-merge checklist. Use when user wants to merge PR, close PR, finalize PR, complete merge, approve and merge, or execute merge. Runs pre-merge validation (tests, lint, CI, comments), confirms with user, merges with proper format, handles post-merge cleanup.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GitHub PR merge
|
|
7
|
+
|
|
8
|
+
Merges Pull Requests after validating pre-merge checklist and handling post-merge cleanup.
|
|
9
|
+
|
|
10
|
+
## Current PR
|
|
11
|
+
|
|
12
|
+
!`gh pr view --json number,title,state -q '"PR #\(.number): \(.title) (\(.state))"' 2>/dev/null`
|
|
13
|
+
|
|
14
|
+
## Core workflow
|
|
15
|
+
|
|
16
|
+
### 1. Check comments status
|
|
17
|
+
|
|
18
|
+
Verify all review comments have at least one reply:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner')
|
|
22
|
+
PR=$(gh pr view --json number -q '.number')
|
|
23
|
+
|
|
24
|
+
# Find unreplied comment IDs
|
|
25
|
+
gh api repos/$REPO/pulls/$PR/comments --jq '
|
|
26
|
+
[.[] | select(.in_reply_to_id) | .in_reply_to_id] as $replied |
|
|
27
|
+
[.[] | select(.in_reply_to_id == null) | select(.id | IN($replied[]) | not) | .id]
|
|
28
|
+
'
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**If unreplied comments exist:**
|
|
32
|
+
- **STOP** the merge process
|
|
33
|
+
- Inform user: "Found unreplied comments: [IDs]. Run github-pr-review first."
|
|
34
|
+
- **NEVER** reply to comments from this skill
|
|
35
|
+
|
|
36
|
+
### 2. Run validation
|
|
37
|
+
|
|
38
|
+
Run tests, linting, and verify CI checks. All **MUST** pass before proceeding.
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
gh pr checks $PR
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 3. Confirm with user
|
|
45
|
+
|
|
46
|
+
**ALWAYS show checklist summary and ask before merging:**
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
Pre-merge checklist:
|
|
50
|
+
- Tests: passing
|
|
51
|
+
- Lint: passing
|
|
52
|
+
- CI: green
|
|
53
|
+
- Comments: all replied
|
|
54
|
+
|
|
55
|
+
Ready to merge PR #X. Proceed?
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 4. Execute merge
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
gh pr merge $PR --merge --delete-branch --body "$(cat <<'EOF'
|
|
62
|
+
- Key change 1
|
|
63
|
+
- Key change 2
|
|
64
|
+
- Key change 3
|
|
65
|
+
|
|
66
|
+
Reviews: N/N addressed
|
|
67
|
+
Tests: X passed (Y% cov)
|
|
68
|
+
Refs: Task N, Req M
|
|
69
|
+
EOF
|
|
70
|
+
)"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Merge strategy**: always `--merge` (merge commit), never squash or rebase.
|
|
74
|
+
|
|
75
|
+
`--delete-branch` automatically deletes the remote branch after merge.
|
|
76
|
+
|
|
77
|
+
### 5. Post-merge cleanup
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
git checkout develop && git pull origin develop
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Merge message format
|
|
84
|
+
|
|
85
|
+
Concise format for a clean git log:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
- Key change 1 (what was added/fixed)
|
|
89
|
+
- Key change 2
|
|
90
|
+
- Key change 3
|
|
91
|
+
|
|
92
|
+
Reviews: 7/7 addressed (Gemini 5, Codex 2)
|
|
93
|
+
Tests: 628 passed (88% cov)
|
|
94
|
+
Refs: Task 8, Req 14-15
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- 3-5 bullet points max for changes
|
|
98
|
+
- One line each for reviews summary, test results, and task references
|
|
99
|
+
- No headers (##), no verbose sections
|
|
100
|
+
- Total: ~10 lines max
|
|
101
|
+
|
|
102
|
+
## Important rules
|
|
103
|
+
|
|
104
|
+
- **ALWAYS** run tests, lint, and CI checks before merging
|
|
105
|
+
- **ALWAYS** verify all review comments have replies
|
|
106
|
+
- **ALWAYS** confirm with user before executing merge
|
|
107
|
+
- **ALWAYS** use merge commit (`--merge`), never squash/rebase
|
|
108
|
+
- **ALWAYS** delete feature branch after successful merge
|
|
109
|
+
- **NEVER** merge with failing tests, lint, or CI checks
|
|
110
|
+
- **NEVER** skip user confirmation
|
|
111
|
+
- **NEVER** reply to PR comments from this skill - use github-pr-review instead
|
|
112
|
+
- **STOP** merge if unreplied comments exist and direct user to review skill
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-pr-review
|
|
3
|
+
description: Handles PR review comments and feedback resolution. Use when user wants to resolve PR comments, handle review feedback, fix review comments, address PR review, check review status, respond to reviewer, verify PR readiness, review PR comments, analyze review feedback, evaluate PR comments, assess review suggestions, or triage PR comments. Fetches comments via GitHub CLI, classifies by severity, applies fixes with user confirmation, commits with proper format, replies to threads.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GitHub PR review
|
|
7
|
+
|
|
8
|
+
Resolves Pull Request review comments with severity-based prioritization, fix application, and thread replies.
|
|
9
|
+
|
|
10
|
+
## Current PR
|
|
11
|
+
|
|
12
|
+
!`gh pr view --json number,title,state -q '"PR #\(.number): \(.title) (\(.state))"' 2>/dev/null`
|
|
13
|
+
|
|
14
|
+
## Core workflow
|
|
15
|
+
|
|
16
|
+
### 1. Fetch and classify comments
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner')
|
|
20
|
+
PR=$(gh pr view --json number -q '.number')
|
|
21
|
+
gh api repos/$REPO/pulls/$PR/comments
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Filter out replies (`in_reply_to_id != null`). Classify originals by severity and process in order: CRITICAL > HIGH > MEDIUM > LOW.
|
|
25
|
+
|
|
26
|
+
| Severity | Indicators | Action |
|
|
27
|
+
|----------|------------|--------|
|
|
28
|
+
| CRITICAL | `critical.svg`, "security", "vulnerability" | Must fix |
|
|
29
|
+
| HIGH | `high-priority.svg`, "High Severity" | Should fix |
|
|
30
|
+
| MEDIUM | `medium-priority.svg`, "Medium Severity" | Recommended |
|
|
31
|
+
| LOW | `low-priority.svg`, "style", "nit" | Optional |
|
|
32
|
+
|
|
33
|
+
See `references/severity_guide.md` for full detection patterns (Gemini badges, Cursor comments, keyword fallback, related comments heuristics).
|
|
34
|
+
|
|
35
|
+
### 2. Process each comment
|
|
36
|
+
|
|
37
|
+
For each comment, in severity order:
|
|
38
|
+
|
|
39
|
+
1. **Show context**: comment ID, severity, file:line, quote
|
|
40
|
+
2. **Read affected code** and propose fix
|
|
41
|
+
3. **Confirm with user** before applying
|
|
42
|
+
4. **Apply fix** if approved
|
|
43
|
+
5. **Verify ALL issues** in the comment are addressed (multi-issue comments are common)
|
|
44
|
+
|
|
45
|
+
### 3. Commit changes
|
|
46
|
+
|
|
47
|
+
Use git-commit skill format. Functional fixes get separate commits, cosmetic fixes are batched:
|
|
48
|
+
|
|
49
|
+
| Change type | Strategy |
|
|
50
|
+
|-------------|----------|
|
|
51
|
+
| Functional (CRITICAL/HIGH) | Separate commit per fix |
|
|
52
|
+
| Cosmetic (MEDIUM/LOW) | Single batch `style:` commit |
|
|
53
|
+
|
|
54
|
+
Reference the comment ID in the commit body.
|
|
55
|
+
|
|
56
|
+
### 4. Reply to threads
|
|
57
|
+
|
|
58
|
+
**Important**: use `--input -` with JSON. The `-f in_reply_to=...` syntax does NOT work.
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
COMMIT=$(git rev-parse --short HEAD)
|
|
62
|
+
gh api repos/$REPO/pulls/$PR/comments \
|
|
63
|
+
--input - <<< '{"body": "Fixed in '"$COMMIT"'. Brief explanation.", "in_reply_to": 123456789}'
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Reply templates** (no emojis, minimal and professional):
|
|
67
|
+
|
|
68
|
+
| Situation | Template |
|
|
69
|
+
|-----------|----------|
|
|
70
|
+
| Fixed | `Fixed in [hash]. [brief description of fix]` |
|
|
71
|
+
| Won't fix | `Won't fix: [reason]` |
|
|
72
|
+
| By design | `By design: [explanation]` |
|
|
73
|
+
| Deferred | `Deferred to [issue/task]. Will address in future iteration.` |
|
|
74
|
+
| Acknowledged | `Acknowledged. [brief note]` |
|
|
75
|
+
|
|
76
|
+
### 5. Run tests and push
|
|
77
|
+
|
|
78
|
+
Run the project test suite. All tests must pass before pushing. Push all fixes together to minimize review loops.
|
|
79
|
+
|
|
80
|
+
### 6. Submit review (optional)
|
|
81
|
+
|
|
82
|
+
After addressing all comments, formally submit a review:
|
|
83
|
+
|
|
84
|
+
- `gh pr review $PR --approve --body "..."` - all comments addressed, PR is ready
|
|
85
|
+
- `gh pr review $PR --request-changes --body "..."` - critical issues remain
|
|
86
|
+
- `gh pr review $PR --comment --body "..."` - progress update, no decision yet
|
|
87
|
+
|
|
88
|
+
## Avoiding review loops
|
|
89
|
+
|
|
90
|
+
When bots (Gemini, Codex, etc.) review every push:
|
|
91
|
+
|
|
92
|
+
1. **Batch fixes**: accumulate all fixes, push once
|
|
93
|
+
2. **Draft PR**: convert to draft during fixes
|
|
94
|
+
3. **Commit keywords**: some bots respect `[skip ci]` or `[skip review]`
|
|
95
|
+
|
|
96
|
+
## Important rules
|
|
97
|
+
|
|
98
|
+
- **ALWAYS** confirm before modifying files
|
|
99
|
+
- **ALWAYS** verify ALL issues in multi-issue comments are fixed
|
|
100
|
+
- **ALWAYS** run tests before pushing
|
|
101
|
+
- **ALWAYS** reply to resolved threads using standard templates
|
|
102
|
+
- **ALWAYS** submit formal review (`gh pr review`) after addressing all comments
|
|
103
|
+
- **NEVER** use emojis in commit messages or thread replies
|
|
104
|
+
- **NEVER** skip HIGH/CRITICAL comments without explicit user approval
|
|
105
|
+
- **Functional fixes** -> separate commits (one per fix)
|
|
106
|
+
- **Cosmetic fixes** -> batch into single `style:` commit
|
|
107
|
+
|
|
108
|
+
## References
|
|
109
|
+
|
|
110
|
+
- `references/severity_guide.md` - Severity detection patterns (Gemini badges, Cursor comments, keyword fallback, related comments heuristics)
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Severity guide
|
|
2
|
+
|
|
3
|
+
Reference guide for interpreting severity levels from automated review comments (Gemini, Cursor, and others).
|
|
4
|
+
|
|
5
|
+
## Severity Badges
|
|
6
|
+
|
|
7
|
+
Gemini uses visual badges in review comments to indicate severity:
|
|
8
|
+
|
|
9
|
+
### CRITICAL
|
|
10
|
+
**Badge**: ``
|
|
11
|
+
|
|
12
|
+
**Visual**: Red badge with "critical" text
|
|
13
|
+
|
|
14
|
+
**Meaning**: Must be fixed before merge. Indicates:
|
|
15
|
+
- Security vulnerabilities
|
|
16
|
+
- Data loss risks
|
|
17
|
+
- Logic errors causing incorrect behavior
|
|
18
|
+
- Infinite loops or deadlocks
|
|
19
|
+
- Memory leaks or resource exhaustion
|
|
20
|
+
|
|
21
|
+
**Action**: Stop and fix immediately. These block merge.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### HIGH
|
|
26
|
+
**Badge**: ``
|
|
27
|
+
|
|
28
|
+
**Visual**: Orange badge
|
|
29
|
+
|
|
30
|
+
**Meaning**: Should be fixed. Indicates:
|
|
31
|
+
- Performance issues
|
|
32
|
+
- Error handling gaps
|
|
33
|
+
- Potential race conditions
|
|
34
|
+
- Missing validation on important paths
|
|
35
|
+
|
|
36
|
+
**Action**: Address before merge unless there's a strong reason not to.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
### MEDIUM
|
|
41
|
+
**Badge**: ``
|
|
42
|
+
|
|
43
|
+
**Visual**: Yellow badge
|
|
44
|
+
|
|
45
|
+
**Meaning**: Recommended fix. Indicates:
|
|
46
|
+
- Code style issues
|
|
47
|
+
- Minor refactoring opportunities
|
|
48
|
+
- Unreachable code (dead code)
|
|
49
|
+
- Duplicate logic
|
|
50
|
+
- Missing edge case handling
|
|
51
|
+
|
|
52
|
+
**Action**: Address if time permits, or create follow-up issue.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### LOW
|
|
57
|
+
**Badge**: ``
|
|
58
|
+
|
|
59
|
+
**Visual**: Blue/gray badge
|
|
60
|
+
|
|
61
|
+
**Meaning**: Optional improvement. Indicates:
|
|
62
|
+
- Import ordering
|
|
63
|
+
- Naming conventions
|
|
64
|
+
- Documentation suggestions
|
|
65
|
+
- Minor style preferences
|
|
66
|
+
|
|
67
|
+
**Action**: Optional. Can be skipped with justification.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Detection Patterns
|
|
72
|
+
|
|
73
|
+
### Badge Detection (Primary)
|
|
74
|
+
```python
|
|
75
|
+
# In comment body, look for:
|
|
76
|
+
"critical.svg" → CRITICAL
|
|
77
|
+
"high-priority.svg" → HIGH
|
|
78
|
+
"medium-priority.svg" → MEDIUM
|
|
79
|
+
"low-priority.svg" → LOW
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Cursor Comments
|
|
83
|
+
```
|
|
84
|
+
<!-- **High Severity** --> → HIGH
|
|
85
|
+
<!-- **Medium Severity** --> → MEDIUM
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Keyword Detection (Fallback)
|
|
89
|
+
When badges or HTML comments aren't present, infer from keywords:
|
|
90
|
+
|
|
91
|
+
| Keywords | Severity |
|
|
92
|
+
|----------|----------|
|
|
93
|
+
| security, vulnerability, injection, XSS, SQL | CRITICAL/HIGH |
|
|
94
|
+
| dangerous, unsafe, exploit | CRITICAL |
|
|
95
|
+
| performance, slow, O(n²) | HIGH |
|
|
96
|
+
| error handling, exception, catch | HIGH |
|
|
97
|
+
| unreachable, dead code, unused | MEDIUM |
|
|
98
|
+
| refactor, simplify, consolidate | MEDIUM |
|
|
99
|
+
| style, formatting, PEP, naming | LOW |
|
|
100
|
+
| import order, whitespace | LOW |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Related Comments Detection
|
|
105
|
+
|
|
106
|
+
Comments are often related when:
|
|
107
|
+
|
|
108
|
+
1. **Consequence relationship**: Comment B is a consequence of fixing Comment A
|
|
109
|
+
- Keywords: "consequence", "result of", "as mentioned above"
|
|
110
|
+
|
|
111
|
+
2. **Same root cause**: Multiple comments about the same underlying issue
|
|
112
|
+
- Keywords: "root cause", "same issue", "related to"
|
|
113
|
+
|
|
114
|
+
3. **Unreachable code**: After an exception handling fix, related `except` blocks may become unreachable
|
|
115
|
+
- Pattern: CRITICAL exception handling → MEDIUM unreachable code
|
|
116
|
+
|
|
117
|
+
4. **Same function/method**: Comments within ~100 lines in the same file, where one is CRITICAL and others are MEDIUM/LOW
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Example: Exception Handling Pattern
|
|
122
|
+
|
|
123
|
+
Common scenario from Gemini reviews:
|
|
124
|
+
|
|
125
|
+
**Comment 1 (CRITICAL)**: Exception handling in `method_x()` needs refactoring:
|
|
126
|
+
- FileNotFoundError should fail-fast, not retry
|
|
127
|
+
- Generic exceptions need sleep to avoid busy-loop
|
|
128
|
+
|
|
129
|
+
**Comment 2 (MEDIUM)**: `except FileNotFoundError` block at line 186 is unreachable
|
|
130
|
+
→ This is a CONSEQUENCE of fixing Comment 1
|
|
131
|
+
|
|
132
|
+
**Comment 3 (MEDIUM)**: `except FileNotFoundError` block at line 473 is unreachable
|
|
133
|
+
→ Also a CONSEQUENCE of fixing Comment 1
|
|
134
|
+
|
|
135
|
+
**Resolution**: Fix Comment 1 first. Comments 2 and 3 will be automatically resolved.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Gemini Config Reference
|
|
140
|
+
|
|
141
|
+
Gemini behavior is controlled by `.gemini/config.yaml`:
|
|
142
|
+
|
|
143
|
+
```yaml
|
|
144
|
+
code_review:
|
|
145
|
+
threshold: LOW # Minimum severity to report
|
|
146
|
+
auto_fix: false # Whether to suggest auto-fixes
|
|
147
|
+
blocking: false # Whether reviews block merge
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
When `threshold: LOW`, all severities are reported.
|
|
151
|
+
When `blocking: false`, reviews are advisory only.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Workflow Integration
|
|
156
|
+
|
|
157
|
+
1. **Fetch comments**: Parse severity from badge URLs in comment body
|
|
158
|
+
2. **Sort by severity**: CRITICAL → HIGH → MEDIUM → LOW
|
|
159
|
+
3. **Group related**: Use heuristics above
|
|
160
|
+
4. **Process CRITICAL first**: These often resolve MEDIUM/LOW comments
|
|
161
|
+
5. **Skip LOW if needed**: They're optional by definition
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## References
|
|
166
|
+
|
|
167
|
+
- [Gemini Code Assist Documentation](https://cloud.google.com/gemini/docs/discover/code-assist)
|
|
168
|
+
- [GitHub PR Review API](https://docs.github.com/en/rest/pulls/comments)
|