@mrciphersmith/keryx 0.2.9
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/LICENSE +21 -0
- package/README.md +351 -0
- package/dist/cli.js +48427 -0
- package/dist/proxy-worker.js +381 -0
- package/package.json +63 -0
- package/src/gdgraph/affected.test.ts +100 -0
- package/src/gdgraph/affected.ts +135 -0
- package/src/gdgraph/build-integrity.test.ts +193 -0
- package/src/gdgraph/build-lang.test.ts +399 -0
- package/src/gdgraph/build.test.ts +120 -0
- package/src/gdgraph/build.ts +804 -0
- package/src/gdgraph/config.test.ts +47 -0
- package/src/gdgraph/config.ts +113 -0
- package/src/gdgraph/core-sources.test.ts +99 -0
- package/src/gdgraph/core-sources.ts +20 -0
- package/src/gdgraph/enrich.ts +79 -0
- package/src/gdgraph/fallback.test.ts +153 -0
- package/src/gdgraph/find.test.ts +78 -0
- package/src/gdgraph/find.ts +107 -0
- package/src/gdgraph/pagerank.ts +129 -0
- package/src/gdgraph/path.test.ts +56 -0
- package/src/gdgraph/path.ts +112 -0
- package/src/gdgraph/query.ts +133 -0
- package/src/gdgraph/repomap.test.ts +110 -0
- package/src/gdgraph/repomap.ts +193 -0
- package/src/gdgraph/service.test.ts +59 -0
- package/src/gdgraph/service.ts +51 -0
- package/src/gdgraph/staleness.ts +20 -0
- package/src/gdgraph/symbol.test.ts +89 -0
- package/src/gdgraph/symbol.ts +123 -0
- package/src/gdgraph/symbols-capability.test.ts +41 -0
- package/src/gdgraph/symbols-capability.ts +49 -0
- package/src/gdgraph/target.ts +56 -0
- package/src/gdgraph/treesitter/adapter.test.ts +249 -0
- package/src/gdgraph/treesitter/adapter.ts +213 -0
- package/src/gdgraph/treesitter/extract.test.ts +278 -0
- package/src/gdgraph/treesitter/extract.ts +389 -0
- package/src/gdgraph/treesitter/grammars.ts +110 -0
- package/src/gdgraph/treesitter/no-treesitter-import.test.ts +51 -0
- package/src/gdgraph/treesitter/resolve-calls.test.ts +38 -0
- package/src/gdgraph/types.ts +63 -0
- package/src/gdskills/bundled/rules/core/api-contracts.mdc +148 -0
- package/src/gdskills/bundled/rules/core/async-patterns.mdc +185 -0
- package/src/gdskills/bundled/rules/core/clean-architecture.mdc +163 -0
- package/src/gdskills/bundled/rules/core/code-review-ai-assistant.mdc +49 -0
- package/src/gdskills/bundled/rules/core/code-review-b091-profile.mdc +48 -0
- package/src/gdskills/bundled/rules/core/code-style-patterns.mdc +54 -0
- package/src/gdskills/bundled/rules/core/commit-message-formatting.mdc +25 -0
- package/src/gdskills/bundled/rules/core/database-patterns.mdc +162 -0
- package/src/gdskills/bundled/rules/core/documentation-management.mdc +106 -0
- package/src/gdskills/bundled/rules/core/error-handling.mdc +163 -0
- package/src/gdskills/bundled/rules/core/execution-metrics.md +99 -0
- package/src/gdskills/bundled/rules/core/frontend-assistant.mdc +40 -0
- package/src/gdskills/bundled/rules/core/git-rules.mdc +37 -0
- package/src/gdskills/bundled/rules/core/gproject-contracts.mdc +198 -0
- package/src/gdskills/bundled/rules/core/implementation-doc-mandate.mdc +149 -0
- package/src/gdskills/bundled/rules/core/implementation-plans.mdc +58 -0
- package/src/gdskills/bundled/rules/core/jobs-documentation.mdc +221 -0
- package/src/gdskills/bundled/rules/core/mobx-store-template.mdc +561 -0
- package/src/gdskills/bundled/rules/core/model-selection.mdc +53 -0
- package/src/gdskills/bundled/rules/core/nestjs-dto.mdc +50 -0
- package/src/gdskills/bundled/rules/core/playwright-testing.mdc +321 -0
- package/src/gdskills/bundled/rules/core/requirements-management.mdc +35 -0
- package/src/gdskills/bundled/rules/core/requirements-package-standard.mdc +103 -0
- package/src/gdskills/bundled/rules/core/review-agent-profile.mdc +49 -0
- package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +44 -0
- package/src/gdskills/bundled/rules/core/rule-management-workflow.mdc +62 -0
- package/src/gdskills/bundled/rules/core/security-baseline.mdc +155 -0
- package/src/gdskills/bundled/rules/core/shared-definitions.mdc +79 -0
- package/src/gdskills/bundled/rules/core/skill-lifecycle.mdc +55 -0
- package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +88 -0
- package/src/gdskills/bundled/rules/core/solid-principles.mdc +149 -0
- package/src/gdskills/bundled/rules/core/storybook-guidelines.mdc +36 -0
- package/src/gdskills/bundled/rules/core/subagent-context-construction.md +107 -0
- package/src/gdskills/bundled/rules/core/subagent-status-protocol.md +169 -0
- package/src/gdskills/bundled/rules/core/tdd-workflow.mdc +96 -0
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +47 -0
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +55 -0
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +352 -0
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +39 -0
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +29 -0
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +567 -0
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +567 -0
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +655 -0
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +567 -0
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +567 -0
- package/src/gdskills/bundled/skills/orchestration/context-collector/input-contract.schema.json +134 -0
- package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +183 -0
- package/src/gdskills/bundled/skills/orchestration/context-collector/output-contract.schema.json +208 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +1412 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +1412 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.detail.md +735 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +468 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +1412 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +1412 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.md +62 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.template.md +79 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/input-contract.schema.json +247 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +362 -0
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/output-contract.schema.json +87 -0
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +105 -0
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +105 -0
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +165 -0
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +379 -0
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/input-contract.schema.json +33 -0
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/output-contract.schema.json +41 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +307 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +307 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +373 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +307 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +307 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/input-contract.schema.json +130 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/issue-request.template.md +50 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +155 -0
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/output-contract.schema.json +61 -0
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +365 -0
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +365 -0
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +373 -0
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +365 -0
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +365 -0
- package/src/gdskills/bundled/skills/orchestration/job-documenter/input-contract.schema.json +55 -0
- package/src/gdskills/bundled/skills/orchestration/job-documenter/output-contract.schema.json +58 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +1701 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +1701 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +1734 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +1701 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +1701 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json +188 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/orchestrator-prompt.md +179 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/output-contract.schema.json +103 -0
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/state.schema.json +164 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +395 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +395 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +556 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +395 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +395 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +204 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/orchestrator-prompt.md +206 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +51 -0
- package/src/gdskills/bundled/skills/orchestration/task-implementer/task-request.template.md +111 -0
- package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +163 -0
- package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +161 -0
- package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +128 -0
- package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +321 -0
- package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +166 -0
- package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +253 -0
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.claude.md +46 -0
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +90 -0
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +90 -0
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +90 -0
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +33 -0
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +33 -0
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +190 -0
- package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +142 -0
- package/src/gdskills/bundled/skills/planning/docpack-orchestrator/input-contract.schema.json +31 -0
- package/src/gdskills/bundled/skills/planning/docpack-orchestrator/output-contract.schema.json +31 -0
- package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +80 -0
- package/src/gdskills/bundled/skills/planning/docpack-review/input-contract.schema.json +20 -0
- package/src/gdskills/bundled/skills/planning/docpack-review/output-contract.schema.json +36 -0
- package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +181 -0
- package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +181 -0
- package/src/gdskills/bundled/skills/planning/interview/SKILL.md +187 -0
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.claude.md +94 -0
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +99 -0
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +99 -0
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +105 -0
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +33 -0
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +33 -0
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +237 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +33 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +33 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.md +190 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +193 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +193 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +193 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +193 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +193 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/input-contract.schema.json +63 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/output-contract.schema.json +175 -0
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +31 -0
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +31 -0
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +153 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +32 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +32 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +166 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +44 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +44 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +243 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +43 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +43 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +193 -0
- package/src/gdskills/bundled/skills/platform/agent-entrypoint-distiller/SKILL.md +47 -0
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +87 -0
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +87 -0
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +87 -0
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +100 -0
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +100 -0
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +100 -0
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.claude.md +45 -0
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +84 -0
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +84 -0
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +84 -0
- package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +66 -0
- package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +66 -0
- package/src/gdskills/bundled/skills/quality/commit/SKILL.md +66 -0
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.claude.md +40 -0
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +66 -0
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +66 -0
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +66 -0
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.claude.md +45 -0
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +81 -0
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +81 -0
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +81 -0
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.claude.md +42 -0
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +70 -0
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +70 -0
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +70 -0
- package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +103 -0
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.claude.md +48 -0
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +83 -0
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +83 -0
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +83 -0
- package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +75 -0
- package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +75 -0
- package/src/gdskills/bundled/skills/quality/pr/SKILL.md +75 -0
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +364 -0
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +295 -0
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +378 -0
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +364 -0
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +38 -0
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/input-contract.schema.json +53 -0
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/output-contract.schema.json +46 -0
- package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +52 -0
- package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +52 -0
- package/src/gdskills/bundled/skills/quality/push/SKILL.md +52 -0
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.claude.md +40 -0
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +61 -0
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +61 -0
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +61 -0
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.claude.md +30 -0
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +75 -0
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +75 -0
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +75 -0
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +64 -0
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +74 -0
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +339 -0
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +48 -0
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +44 -0
- package/src/gdskills/bundled/skills/quality/tests-creator/input-contract.schema.json +121 -0
- package/src/gdskills/bundled/skills/quality/tests-creator/output-contract.schema.json +127 -0
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +204 -0
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +204 -0
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +203 -0
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +204 -0
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +204 -0
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.codex.md +209 -0
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.cursor.md +209 -0
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.md +208 -0
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.opencode.md +209 -0
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.zed.md +209 -0
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +263 -0
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +263 -0
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +258 -0
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +263 -0
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +263 -0
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +175 -0
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +175 -0
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +168 -0
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +175 -0
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +175 -0
- package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +360 -0
- package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +337 -0
- package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +477 -0
- package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +93 -0
- package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +119 -0
- package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +595 -0
- package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +144 -0
- package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +519 -0
- package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +323 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +927 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/input-contract.schema.json +153 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/output-contract.schema.json +77 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/review-context.schema.json +389 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-finding.schema.json +189 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +241 -0
- package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +344 -0
- package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +327 -0
- package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +348 -0
- package/src/gdskills/bundled/skills/review/review-strict/SKILL.md +328 -0
- package/src/gdskills/bundled/skills/review/review-style/SKILL.md +343 -0
- package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +134 -0
- package/src/gdskills/bundled/skills/shared/git-merge-base.md +33 -0
- package/src/gdskills/contracts/agent-event.schema.json +32 -0
- package/src/gdskills/contracts/orchestrator-state.schema.json +58 -0
- package/src/gdskills/contracts/review-finding.schema.json +59 -0
- package/src/gdskills/contracts/subagent-dispatch.schema.json +123 -0
- package/src/gdskills/contracts/subagent-result.schema.json +136 -0
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-issue-documenter
|
|
3
|
+
description: "Analyzes PR commits/diff and generates structured descriptions for PRs and linked GitHub issues. Creates sub-issues, checks for contradictions with existing descriptions, updates parent issues. Use when: documenting PR changes, adding PR description, creating issue for PR, updating issue body."
|
|
4
|
+
triggers:
|
|
5
|
+
- "Add PR description"
|
|
6
|
+
- "Document PR changes"
|
|
7
|
+
- "Describe what was done in PR"
|
|
8
|
+
- "Create issue for PR"
|
|
9
|
+
- "Update PR and issue"
|
|
10
|
+
- "Add description to PR"
|
|
11
|
+
- "Write PR summary"
|
|
12
|
+
metadata:
|
|
13
|
+
author: "MrCipherSmith"
|
|
14
|
+
version: "1.0.0"
|
|
15
|
+
category: "documentation"
|
|
16
|
+
license: "MIT"
|
|
17
|
+
compatibility: "cursor,codex,zed,opencode"
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# PR & Issue Documenter
|
|
21
|
+
|
|
22
|
+
## Purpose
|
|
23
|
+
|
|
24
|
+
Analyzes PR commits and diffs to generate structured, accurate descriptions for GitHub PRs and linked issues. Handles the full lifecycle: PR description, sub-issue creation, parent issue updates, and contradiction detection with existing descriptions.
|
|
25
|
+
|
|
26
|
+
**Input**: PR URL, issue URL, and/or commit SHAs
|
|
27
|
+
**Output**: Updated PR body, created/updated issue body, parent issue link
|
|
28
|
+
|
|
29
|
+
## When to Use
|
|
30
|
+
|
|
31
|
+
- User provides PR link and asks for a description
|
|
32
|
+
- User asks to document changes in a PR
|
|
33
|
+
- User wants to create an issue for a PR
|
|
34
|
+
- User wants to update an existing issue with PR changes
|
|
35
|
+
- User provides commit SHAs and wants documentation
|
|
36
|
+
|
|
37
|
+
## Architecture
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Step 1: Parse Input
|
|
41
|
+
|
|
|
42
|
+
Step 2: Collect Context (commits, diff, existing descriptions)
|
|
43
|
+
|
|
|
44
|
+
Step 3: Analyze Changes (categorize, group, identify patterns)
|
|
45
|
+
|
|
|
46
|
+
Step 4: Generate PR Description
|
|
47
|
+
|
|
|
48
|
+
Step 5: Handle Issue (create / update / skip)
|
|
49
|
+
|
|
|
50
|
+
Step 6: Apply Changes (gh pr edit, gh issue edit/create)
|
|
51
|
+
|
|
|
52
|
+
Step 7: Verify & Report
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Workflow
|
|
56
|
+
|
|
57
|
+
Copy this checklist and track progress:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Task Progress:
|
|
61
|
+
- [ ] Step 1: Parse input — extract PR URL, issue URL, commit SHAs
|
|
62
|
+
- [ ] Step 2: Collect context — fetch commits, diff, existing descriptions
|
|
63
|
+
- [ ] Step 3: Analyze changes — categorize, group, build key files table
|
|
64
|
+
- [ ] Step 4: Generate PR description
|
|
65
|
+
- [ ] Step 5: Handle issue — create, update, or skip
|
|
66
|
+
- [ ] Step 6: Apply changes via gh CLI
|
|
67
|
+
- [ ] Step 7: Verify and report results to user
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Step 1: Parse Input
|
|
71
|
+
|
|
72
|
+
Extract from user message:
|
|
73
|
+
- **PR URL**: `https://github.com/owner/repo/pull/123` or `#123`
|
|
74
|
+
- **Issue URL**: `https://github.com/owner/repo/issues/456` or `#456`
|
|
75
|
+
- **Commit SHAs**: full or short SHA hashes
|
|
76
|
+
|
|
77
|
+
**Decision tree:**
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
IF PR URL provided:
|
|
81
|
+
→ Continue to Step 2
|
|
82
|
+
|
|
83
|
+
IF only commit SHAs provided (no PR):
|
|
84
|
+
→ ASK user: "Should I also create/update an issue, or just analyze the commits?"
|
|
85
|
+
→ If user provides issue link → continue with both
|
|
86
|
+
→ If user says skip → analyze commits only and present summary
|
|
87
|
+
|
|
88
|
+
IF only issue URL provided (no PR):
|
|
89
|
+
→ ASK user: "Please provide a PR URL or commit SHAs to analyze changes"
|
|
90
|
+
|
|
91
|
+
IF nothing provided:
|
|
92
|
+
→ ASK user: "Please provide a PR URL, issue URL, or commit SHAs"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Step 2: Collect Context
|
|
96
|
+
|
|
97
|
+
Gather all necessary data:
|
|
98
|
+
|
|
99
|
+
**For PR:**
|
|
100
|
+
```bash
|
|
101
|
+
gh pr view {number} --json title,body,state,baseRefName,headRefName,commits
|
|
102
|
+
gh pr diff {number}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**For specific commits:**
|
|
106
|
+
```bash
|
|
107
|
+
git show {sha} --stat # files changed
|
|
108
|
+
git show {sha} --format="" # full diff
|
|
109
|
+
git log {sha} -1 --format="%H %s%n%b" # commit message
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**For existing issue (if provided):**
|
|
113
|
+
```bash
|
|
114
|
+
gh issue view {number} --json title,body,state
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**For parent issue detection:**
|
|
118
|
+
- Check PR body for `Closes #N`, `Fixes #N`, `Parent issue: #N`
|
|
119
|
+
- Check issue body for `Parent issue: #N`
|
|
120
|
+
- If parent issue found, fetch its body too:
|
|
121
|
+
```bash
|
|
122
|
+
gh issue view {parent_number} --json title,body
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Step 3: Analyze Changes
|
|
126
|
+
|
|
127
|
+
Systematically analyze the collected diffs:
|
|
128
|
+
|
|
129
|
+
**3.1. Categorize each change:**
|
|
130
|
+
- `refactor` — restructuring without behavior change
|
|
131
|
+
- `feature` — new functionality
|
|
132
|
+
- `bugfix` — fixing broken behavior
|
|
133
|
+
- `cleanup` — removing dead code, unused imports
|
|
134
|
+
- `i18n` — translations, localization
|
|
135
|
+
- `test` — test additions/modifications
|
|
136
|
+
- `docs` — documentation changes
|
|
137
|
+
- `style` — formatting, naming, import ordering
|
|
138
|
+
|
|
139
|
+
**3.2. Group by logical area:**
|
|
140
|
+
- Identify related changes across files
|
|
141
|
+
- Group into named sections (e.g., "StepStore — Input/Output Consolidation")
|
|
142
|
+
- Each section should have a clear purpose statement
|
|
143
|
+
|
|
144
|
+
**3.3. Identify key patterns:**
|
|
145
|
+
- Deleted files (important to highlight)
|
|
146
|
+
- Renamed fields/methods (before → after)
|
|
147
|
+
- New APIs/interfaces
|
|
148
|
+
- Breaking changes
|
|
149
|
+
- Temporary/hardcoded values (mark for follow-up)
|
|
150
|
+
|
|
151
|
+
**3.4. Build Key Files table:**
|
|
152
|
+
|
|
153
|
+
| File | Change |
|
|
154
|
+
|------|--------|
|
|
155
|
+
| `path/to/file.ts` | Brief description |
|
|
156
|
+
| `path/to/deleted.ts` | **Deleted** |
|
|
157
|
+
|
|
158
|
+
### Step 4: Generate PR Description
|
|
159
|
+
|
|
160
|
+
Use this structure:
|
|
161
|
+
|
|
162
|
+
```markdown
|
|
163
|
+
## Summary
|
|
164
|
+
|
|
165
|
+
[2-3 sentences: WHAT was done, WHY it was done. Focus on the purpose, not individual changes.]
|
|
166
|
+
|
|
167
|
+
Closes #N
|
|
168
|
+
|
|
169
|
+
## Changes
|
|
170
|
+
|
|
171
|
+
### [Section Name 1]
|
|
172
|
+
- Bullet point describing specific change
|
|
173
|
+
- Another bullet point
|
|
174
|
+
- Use `code formatting` for identifiers
|
|
175
|
+
|
|
176
|
+
### [Section Name 2]
|
|
177
|
+
...
|
|
178
|
+
|
|
179
|
+
### Other
|
|
180
|
+
- Minor changes that don't warrant their own section
|
|
181
|
+
|
|
182
|
+
## Key Files
|
|
183
|
+
|
|
184
|
+
| File | Change |
|
|
185
|
+
|------|--------|
|
|
186
|
+
| `path/file.ts` | Brief description |
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**PR description rules:**
|
|
190
|
+
- Summary: concise, 2-3 sentences max
|
|
191
|
+
- Changes: grouped by logical area, not by file
|
|
192
|
+
- Use backticks for code identifiers (`ClassName`, `methodName`, `fileName.ts`)
|
|
193
|
+
- Highlight deleted files with **Deleted** in bold
|
|
194
|
+
- Include `Closes #N` if issue is linked
|
|
195
|
+
- Key Files table: sorted by importance, not alphabetically
|
|
196
|
+
|
|
197
|
+
### Step 5: Handle Issue
|
|
198
|
+
|
|
199
|
+
**5.1. If issue URL was provided by user:**
|
|
200
|
+
|
|
201
|
+
Fetch existing issue body and compare with PR changes:
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
IF existing body is empty:
|
|
205
|
+
→ Generate full issue body and apply
|
|
206
|
+
|
|
207
|
+
IF existing body has content:
|
|
208
|
+
→ Check for contradictions:
|
|
209
|
+
- Does the existing description claim something different from what the diff shows?
|
|
210
|
+
- Are there sections that describe changes not present in the diff?
|
|
211
|
+
- Are there changes in the diff not covered by existing sections?
|
|
212
|
+
|
|
213
|
+
IF contradictions found:
|
|
214
|
+
→ Present contradictions to user
|
|
215
|
+
→ ASK: "I found contradictions in the existing issue description. Should I:
|
|
216
|
+
1. Update the contradicting sections and add missing ones
|
|
217
|
+
2. Replace the entire description
|
|
218
|
+
3. Only append new sections"
|
|
219
|
+
→ Apply user's choice
|
|
220
|
+
|
|
221
|
+
IF no contradictions (only missing sections):
|
|
222
|
+
→ Add new sections to existing body
|
|
223
|
+
→ Inform user what was added
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**5.2. If no issue URL provided but PR is linked to a parent issue:**
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
ASK user: "PR is linked to parent issue #N. Should I:
|
|
230
|
+
1. Create a sub-issue under #N with detailed description
|
|
231
|
+
2. Link to an existing issue (provide number)
|
|
232
|
+
3. Skip issue documentation"
|
|
233
|
+
|
|
234
|
+
IF user chooses to create sub-issue:
|
|
235
|
+
→ Generate issue title from changes
|
|
236
|
+
→ Generate detailed issue body (numbered sections, more detail than PR)
|
|
237
|
+
→ gh issue create
|
|
238
|
+
→ Update parent issue body with new sub-issue link
|
|
239
|
+
→ Update PR body with "Closes #NEW_ISSUE"
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**5.3. If no issue URL and no parent issue detected:**
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
ASK user: "No linked issue found. Should I:
|
|
246
|
+
1. Create a new issue for this PR
|
|
247
|
+
2. Create a sub-issue under an existing parent (provide parent issue number)
|
|
248
|
+
3. Skip issue documentation"
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Issue body format** (more detailed than PR):
|
|
252
|
+
|
|
253
|
+
```markdown
|
|
254
|
+
## Summary
|
|
255
|
+
|
|
256
|
+
[Same as PR summary but expanded with more context]
|
|
257
|
+
|
|
258
|
+
**PR**: #N
|
|
259
|
+
Parent issue: #M (if applicable)
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Changes
|
|
264
|
+
|
|
265
|
+
### 1. [Section Name]
|
|
266
|
+
|
|
267
|
+
[Detailed paragraph explaining what was changed and why]
|
|
268
|
+
|
|
269
|
+
- Specific bullet points with technical details
|
|
270
|
+
- Before → after descriptions for renames/refactors
|
|
271
|
+
- Code examples if helpful
|
|
272
|
+
|
|
273
|
+
### 2. [Section Name]
|
|
274
|
+
...
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Key Files
|
|
279
|
+
|
|
280
|
+
| File | Change |
|
|
281
|
+
|------|--------|
|
|
282
|
+
| `path/file.ts` | Description |
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Step 6: Apply Changes
|
|
286
|
+
|
|
287
|
+
Execute the changes via gh CLI:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Update PR description
|
|
291
|
+
gh pr edit {number} --body "..."
|
|
292
|
+
|
|
293
|
+
# Update existing issue
|
|
294
|
+
gh issue edit {number} --body "..."
|
|
295
|
+
|
|
296
|
+
# Create new issue
|
|
297
|
+
gh issue create --title "..." --body "..."
|
|
298
|
+
|
|
299
|
+
# Update parent issue (append sub-issue link)
|
|
300
|
+
gh issue edit {parent_number} --body "..."
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Important:**
|
|
304
|
+
- Use heredoc (`cat <<'EOF'`) for body content to preserve formatting
|
|
305
|
+
- Always verify the result after each operation
|
|
306
|
+
|
|
307
|
+
### Step 7: Verify & Report
|
|
308
|
+
|
|
309
|
+
After all operations, report to the user:
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
Done. Here's what was created/updated:
|
|
313
|
+
|
|
314
|
+
- PR #N description updated: {url}
|
|
315
|
+
- Issue #M created/updated: {url}
|
|
316
|
+
- Parent issue #P updated with sub-issue link: {url}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Contradiction Detection Rules
|
|
320
|
+
|
|
321
|
+
When comparing existing issue description with PR diff:
|
|
322
|
+
|
|
323
|
+
1. **Scope contradiction**: Description says change affects only X types, but diff shows it affects all types
|
|
324
|
+
2. **Field name contradiction**: Description uses old field name, diff shows it was renamed
|
|
325
|
+
3. **Missing sections**: Diff contains changes not described in any section
|
|
326
|
+
4. **Stale sections**: Description contains sections about changes not in the diff
|
|
327
|
+
5. **Required/optional contradiction**: Description says field is optional, diff shows it's required
|
|
328
|
+
|
|
329
|
+
Always present contradictions to user before making changes.
|
|
330
|
+
|
|
331
|
+
## Quality Standards
|
|
332
|
+
|
|
333
|
+
- PR description: concise, scannable, well-structured
|
|
334
|
+
- Issue description: detailed, comprehensive, with numbered sections
|
|
335
|
+
- Always use English for code documentation
|
|
336
|
+
- Never invent changes not present in the diff
|
|
337
|
+
- Always verify diff content before writing descriptions
|
|
338
|
+
- Group related changes logically, not by file
|
|
339
|
+
- Highlight breaking changes and deleted files prominently
|
|
340
|
+
- Mark temporary/hardcoded values for follow-up
|
|
341
|
+
|
|
342
|
+
## Error Handling
|
|
343
|
+
|
|
344
|
+
| Error | Action |
|
|
345
|
+
|-------|--------|
|
|
346
|
+
| PR not found | Ask user to verify PR number/URL |
|
|
347
|
+
| Issue not found | Ask user to verify issue number/URL |
|
|
348
|
+
| Commit SHA not found | Ask user to verify SHA |
|
|
349
|
+
| `gh` CLI not authenticated | Instruct user to run `gh auth login` |
|
|
350
|
+
| Empty diff | Inform user that PR has no file changes |
|
|
351
|
+
| Permission denied | Inform user they may not have write access |
|
|
352
|
+
|
|
353
|
+
## Rules of Engagement
|
|
354
|
+
|
|
355
|
+
1. **DO** analyze ALL commits in the PR, not just the latest one
|
|
356
|
+
2. **DO** check for contradictions before updating existing descriptions
|
|
357
|
+
3. **DO** ask user before overwriting existing issue content
|
|
358
|
+
4. **DO** update parent issue when creating sub-issues
|
|
359
|
+
5. **DO** include `Closes #N` in PR body when issue is linked
|
|
360
|
+
6. **DO NOT** invent or assume changes not visible in the diff
|
|
361
|
+
7. **DO NOT** silently overwrite existing issue descriptions
|
|
362
|
+
8. **DO NOT** create issues without user confirmation
|
|
363
|
+
9. **DO NOT** modify PR title unless explicitly asked
|
|
364
|
+
10. **DO NOT** write comments on GitHub PRs/issues (only edit body)
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-issue-documenter
|
|
3
|
+
description: "Анализирует коммиты/diff PR и генерирует структурированные описания для PR и связанных GitHub issues. Создаёт sub-issues, проверяет противоречия с существующими описаниями, обновляет parent issues."
|
|
4
|
+
triggers:
|
|
5
|
+
- "Добавь описание к PR"
|
|
6
|
+
- "Задокументируй PR"
|
|
7
|
+
- "Опиши что сделано в PR"
|
|
8
|
+
- "Создай тикет для PR"
|
|
9
|
+
- "Обнови PR и тикет"
|
|
10
|
+
- "Add PR description"
|
|
11
|
+
- "Document PR changes"
|
|
12
|
+
metadata:
|
|
13
|
+
author: "MrCipherSmith"
|
|
14
|
+
version: "1.0.0"
|
|
15
|
+
category: "documentation"
|
|
16
|
+
license: "MIT"
|
|
17
|
+
compatibility: "cursor,codex,zed,opencode"
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# PR & Issue Documenter
|
|
21
|
+
|
|
22
|
+
## Назначение
|
|
23
|
+
|
|
24
|
+
Анализирует коммиты и diff PR для генерации структурированных, точных описаний GitHub PR и связанных issues. Полный цикл: описание PR, создание sub-issues, обновление parent issues, проверка противоречий с существующими описаниями.
|
|
25
|
+
|
|
26
|
+
**Вход**: URL PR, URL issue, и/или SHA коммитов
|
|
27
|
+
**Выход**: Обновлённое тело PR, созданный/обновлённый issue, ссылка в parent issue
|
|
28
|
+
|
|
29
|
+
## Когда использовать
|
|
30
|
+
|
|
31
|
+
- Пользователь даёт ссылку на PR и просит описание
|
|
32
|
+
- Пользователь хочет задокументировать изменения в PR
|
|
33
|
+
- Пользователь хочет создать issue для PR
|
|
34
|
+
- Пользователь хочет обновить существующий issue данными PR
|
|
35
|
+
- Пользователь даёт SHA коммитов и хочет документацию
|
|
36
|
+
|
|
37
|
+
## Workflow
|
|
38
|
+
|
|
39
|
+
Скопируй чеклист и отслеживай прогресс:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Прогресс:
|
|
43
|
+
- [ ] Шаг 1: Разобрать входные данные — PR URL, issue URL, SHA коммитов
|
|
44
|
+
- [ ] Шаг 2: Собрать контекст — коммиты, diff, существующие описания
|
|
45
|
+
- [ ] Шаг 3: Анализ изменений — категоризация, группировка, таблица файлов
|
|
46
|
+
- [ ] Шаг 4: Генерация описания PR
|
|
47
|
+
- [ ] Шаг 5: Обработка issue — создать, обновить, или пропустить
|
|
48
|
+
- [ ] Шаг 6: Применить изменения через gh CLI
|
|
49
|
+
- [ ] Шаг 7: Верификация и отчёт
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Шаг 1: Разбор входных данных
|
|
53
|
+
|
|
54
|
+
Извлечь из сообщения пользователя:
|
|
55
|
+
- **PR URL**: `https://github.com/owner/repo/pull/123` или `#123`
|
|
56
|
+
- **Issue URL**: `https://github.com/owner/repo/issues/456` или `#456`
|
|
57
|
+
- **Commit SHA**: полные или короткие хэши
|
|
58
|
+
|
|
59
|
+
**Дерево решений:**
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
ЕСЛИ PR URL указан:
|
|
63
|
+
→ Продолжить к Шагу 2
|
|
64
|
+
|
|
65
|
+
ЕСЛИ только SHA коммитов (без PR):
|
|
66
|
+
→ СПРОСИТЬ: "Нужно ли также создать/обновить issue, или только проанализировать коммиты?"
|
|
67
|
+
|
|
68
|
+
ЕСЛИ только issue URL (без PR):
|
|
69
|
+
→ СПРОСИТЬ: "Укажите URL PR или SHA коммитов для анализа изменений"
|
|
70
|
+
|
|
71
|
+
ЕСЛИ ничего не указано:
|
|
72
|
+
→ СПРОСИТЬ: "Укажите URL PR, URL issue, или SHA коммитов"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Шаг 2: Сбор контекста
|
|
76
|
+
|
|
77
|
+
**Для PR:**
|
|
78
|
+
```bash
|
|
79
|
+
gh pr view {number} --json title,body,state,baseRefName,headRefName,commits
|
|
80
|
+
gh pr diff {number}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Для конкретных коммитов:**
|
|
84
|
+
```bash
|
|
85
|
+
git show {sha} --stat
|
|
86
|
+
git show {sha} --format=""
|
|
87
|
+
git log {sha} -1 --format="%H %s%n%b"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Для существующего issue:**
|
|
91
|
+
```bash
|
|
92
|
+
gh issue view {number} --json title,body,state
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Поиск parent issue:**
|
|
96
|
+
- Проверить тело PR на `Closes #N`, `Fixes #N`, `Parent issue: #N`
|
|
97
|
+
- Проверить тело issue на `Parent issue: #N`
|
|
98
|
+
- Если найден parent → загрузить его тело тоже
|
|
99
|
+
|
|
100
|
+
### Шаг 3: Анализ изменений
|
|
101
|
+
|
|
102
|
+
**3.1. Категоризация:**
|
|
103
|
+
- `refactor` — реструктуризация без изменения поведения
|
|
104
|
+
- `feature` — новая функциональность
|
|
105
|
+
- `bugfix` — исправление бага
|
|
106
|
+
- `cleanup` — удаление мёртвого кода, неиспользуемых импортов
|
|
107
|
+
- `i18n` — переводы, локализация
|
|
108
|
+
- `test` — тесты
|
|
109
|
+
- `style` — форматирование, именование, порядок импортов
|
|
110
|
+
|
|
111
|
+
**3.2. Группировка по логическим областям:**
|
|
112
|
+
- Объединить связанные изменения из разных файлов
|
|
113
|
+
- Каждая секция должна иметь ясную цель
|
|
114
|
+
|
|
115
|
+
**3.3. Ключевые паттерны:**
|
|
116
|
+
- Удалённые файлы (выделить жирным)
|
|
117
|
+
- Переименованные поля/методы (before → after)
|
|
118
|
+
- Новые API/интерфейсы
|
|
119
|
+
- Временные/захардкоженные значения (отметить для follow-up)
|
|
120
|
+
|
|
121
|
+
**3.4. Таблица ключевых файлов:**
|
|
122
|
+
|
|
123
|
+
| File | Change |
|
|
124
|
+
|------|--------|
|
|
125
|
+
| `path/to/file.ts` | Краткое описание |
|
|
126
|
+
| `path/to/deleted.ts` | **Deleted** |
|
|
127
|
+
|
|
128
|
+
### Шаг 4: Генерация описания PR
|
|
129
|
+
|
|
130
|
+
Структура:
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
## Summary
|
|
134
|
+
|
|
135
|
+
[2-3 предложения: ЧТО сделано, ЗАЧЕМ. Фокус на цели, а не на отдельных изменениях.]
|
|
136
|
+
|
|
137
|
+
Closes #N
|
|
138
|
+
|
|
139
|
+
## Changes
|
|
140
|
+
|
|
141
|
+
### [Название секции 1]
|
|
142
|
+
- Пункт с конкретным изменением
|
|
143
|
+
- Используй `форматирование кода` для идентификаторов
|
|
144
|
+
|
|
145
|
+
### [Название секции 2]
|
|
146
|
+
...
|
|
147
|
+
|
|
148
|
+
## Key Files
|
|
149
|
+
|
|
150
|
+
| File | Change |
|
|
151
|
+
|------|--------|
|
|
152
|
+
| `path/file.ts` | Краткое описание |
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Правила:**
|
|
156
|
+
- Summary: кратко, 2-3 предложения максимум
|
|
157
|
+
- Changes: группировка по логике, не по файлам
|
|
158
|
+
- Бэктики для кодовых идентификаторов
|
|
159
|
+
- **Deleted** жирным для удалённых файлов
|
|
160
|
+
- `Closes #N` если issue привязан
|
|
161
|
+
- Описание всегда на **английском** (код-документация)
|
|
162
|
+
|
|
163
|
+
### Шаг 5: Обработка issue
|
|
164
|
+
|
|
165
|
+
**5.1. Если URL issue указан пользователем:**
|
|
166
|
+
|
|
167
|
+
Загрузить текущее тело и сравнить с diff:
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
ЕСЛИ тело пустое:
|
|
171
|
+
→ Сгенерировать полное описание
|
|
172
|
+
|
|
173
|
+
ЕСЛИ тело содержит контент:
|
|
174
|
+
→ Проверить противоречия:
|
|
175
|
+
- Описание утверждает одно, diff показывает другое?
|
|
176
|
+
- Есть секции о несуществующих изменениях?
|
|
177
|
+
- Есть изменения в diff, не описанные нигде?
|
|
178
|
+
|
|
179
|
+
ЕСЛИ противоречия найдены:
|
|
180
|
+
→ Показать пользователю
|
|
181
|
+
→ СПРОСИТЬ: "Обновить противоречащие секции и добавить недостающие / Заменить целиком / Только добавить новые секции"
|
|
182
|
+
→ Применить выбор
|
|
183
|
+
|
|
184
|
+
ЕСЛИ нет противоречий (только пропуски):
|
|
185
|
+
→ Добавить недостающие секции
|
|
186
|
+
→ Сообщить что добавлено
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**5.2. Если issue не указан, но PR привязан к parent issue:**
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
СПРОСИТЬ: "PR привязан к parent issue #N. Нужно ли:
|
|
193
|
+
1. Создать sub-issue под #N с подробным описанием
|
|
194
|
+
2. Привязать к существующему issue (укажите номер)
|
|
195
|
+
3. Пропустить документацию issue"
|
|
196
|
+
|
|
197
|
+
ЕСЛИ создать sub-issue:
|
|
198
|
+
→ Сгенерировать title и body
|
|
199
|
+
→ gh issue create
|
|
200
|
+
→ Обновить parent issue (добавить ссылку)
|
|
201
|
+
→ Обновить PR body (добавить Closes #NEW_ISSUE)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**5.3. Если нет issue и нет parent:**
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
СПРОСИТЬ: "Связанный issue не найден. Нужно ли:
|
|
208
|
+
1. Создать новый issue для этого PR
|
|
209
|
+
2. Создать sub-issue под существующим parent (укажите номер)
|
|
210
|
+
3. Пропустить документацию issue"
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**Формат тела issue** (подробнее чем PR):
|
|
214
|
+
|
|
215
|
+
```markdown
|
|
216
|
+
## Summary
|
|
217
|
+
|
|
218
|
+
[Расширенная версия PR summary с дополнительным контекстом]
|
|
219
|
+
|
|
220
|
+
**PR**: #N
|
|
221
|
+
Parent issue: #M (если есть)
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Changes
|
|
226
|
+
|
|
227
|
+
### 1. [Название секции]
|
|
228
|
+
|
|
229
|
+
[Подробный параграф что изменено и зачем]
|
|
230
|
+
|
|
231
|
+
- Конкретные пункты с техническими деталями
|
|
232
|
+
- Before → after для переименований/рефакторингов
|
|
233
|
+
|
|
234
|
+
### 2. [Название секции]
|
|
235
|
+
...
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Key Files
|
|
240
|
+
|
|
241
|
+
| File | Change |
|
|
242
|
+
|------|--------|
|
|
243
|
+
| `path/file.ts` | Описание |
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Шаг 6: Применение изменений
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
gh pr edit {number} --body "..."
|
|
250
|
+
gh issue edit {number} --body "..."
|
|
251
|
+
gh issue create --title "..." --body "..."
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Использовать heredoc (`cat <<'EOF'`) для тела. Верифицировать результат после каждой операции.
|
|
255
|
+
|
|
256
|
+
### Шаг 7: Верификация и отчёт
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
Готово:
|
|
260
|
+
- PR #N описание обновлено: {url}
|
|
261
|
+
- Issue #M создан/обновлён: {url}
|
|
262
|
+
- Parent issue #P обновлён: {url}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Проверка противоречий
|
|
266
|
+
|
|
267
|
+
1. **Scope**: описание говорит "только X типы", а diff показывает все типы
|
|
268
|
+
2. **Названия полей**: описание использует старое имя, diff показывает переименование
|
|
269
|
+
3. **Пропущенные секции**: изменения в diff не описаны нигде
|
|
270
|
+
4. **Устаревшие секции**: описание содержит секции о несуществующих изменениях
|
|
271
|
+
5. **Required/optional**: описание говорит optional, diff показывает required
|
|
272
|
+
|
|
273
|
+
Всегда показывать противоречия пользователю перед внесением изменений.
|
|
274
|
+
|
|
275
|
+
## Стандарты качества
|
|
276
|
+
|
|
277
|
+
- PR описание: краткое, сканируемое, хорошо структурированное
|
|
278
|
+
- Issue описание: подробное, исчерпывающее, с нумерованными секциями
|
|
279
|
+
- Язык описаний: **всегда английский** (код-документация)
|
|
280
|
+
- Никогда не придумывать изменения, которых нет в diff
|
|
281
|
+
- Группировать по логике, не по файлам
|
|
282
|
+
- Выделять breaking changes и удалённые файлы
|
|
283
|
+
|
|
284
|
+
## Правила
|
|
285
|
+
|
|
286
|
+
1. **Анализировать ВСЕ коммиты** PR, не только последний
|
|
287
|
+
2. **Проверять противоречия** перед обновлением существующих описаний
|
|
288
|
+
3. **Спрашивать** перед перезаписью содержимого issue
|
|
289
|
+
4. **Обновлять parent issue** при создании sub-issues
|
|
290
|
+
5. **Включать `Closes #N`** в тело PR
|
|
291
|
+
6. **НЕ придумывать** изменения, которых нет в diff
|
|
292
|
+
7. **НЕ перезаписывать** молча существующие описания
|
|
293
|
+
8. **НЕ создавать** issues без подтверждения пользователя
|
|
294
|
+
9. **НЕ менять** title PR если не просили явно
|
|
295
|
+
10. **НЕ писать** комментарии в GitHub PR/issues (только edit body)
|