@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,321 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Playwright E2E testing standards, test structure, and UI verification workflows."
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
globs:
|
|
5
|
+
- "e2e/**"
|
|
6
|
+
- "**/*.spec.ts"
|
|
7
|
+
- "playwright.config.ts"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Playwright E2E Testing Guidelines
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
Standardize E2E test creation, execution, and UI verification workflows using Playwright.
|
|
14
|
+
|
|
15
|
+
## When to Apply
|
|
16
|
+
- Writing new E2E tests
|
|
17
|
+
- Debugging failing tests
|
|
18
|
+
- Setting up visual regression tests
|
|
19
|
+
- Analyzing UI behavior changes
|
|
20
|
+
|
|
21
|
+
## Prerequisites
|
|
22
|
+
|
|
23
|
+
Check Playwright is installed and configured:
|
|
24
|
+
```bash
|
|
25
|
+
npm list @playwright/test
|
|
26
|
+
ls playwright.config.ts
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Run Commands
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Run all tests
|
|
33
|
+
npm run e2e
|
|
34
|
+
|
|
35
|
+
# Run specific test file
|
|
36
|
+
npx playwright test e2e/example.spec.ts
|
|
37
|
+
|
|
38
|
+
# Run in headed mode (see browser)
|
|
39
|
+
npx playwright test --headed
|
|
40
|
+
|
|
41
|
+
# Run with UI mode (interactive debugging)
|
|
42
|
+
npx playwright test --ui
|
|
43
|
+
|
|
44
|
+
# Run specific project (chromium/firefox/webkit)
|
|
45
|
+
npx playwright test --project=chromium
|
|
46
|
+
|
|
47
|
+
# Run with trace (for debugging)
|
|
48
|
+
npx playwright test --trace on
|
|
49
|
+
|
|
50
|
+
# View trace report
|
|
51
|
+
npx playwright show-trace trace.zip
|
|
52
|
+
|
|
53
|
+
# Generate HTML report
|
|
54
|
+
npx playwright test --reporter=html
|
|
55
|
+
npx playwright show-report
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Test File Structure
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// e2e/feature-name.spec.ts
|
|
62
|
+
import { test, expect } from '@playwright/test';
|
|
63
|
+
|
|
64
|
+
test.describe('Feature Name', () => {
|
|
65
|
+
test.beforeEach(async ({ page }) => {
|
|
66
|
+
// Setup: login, navigate, etc.
|
|
67
|
+
await page.goto('/path');
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('should display correct initial state', async ({ page }) => {
|
|
71
|
+
// Arrange
|
|
72
|
+
|
|
73
|
+
// Act
|
|
74
|
+
|
|
75
|
+
// Assert
|
|
76
|
+
await expect(page.locator('[data-testid="element"]')).toBeVisible();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('should handle user interaction', async ({ page }) => {
|
|
80
|
+
// Test steps
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## UI Verification Patterns
|
|
86
|
+
|
|
87
|
+
### Element Visibility
|
|
88
|
+
```typescript
|
|
89
|
+
// Check element is visible
|
|
90
|
+
await expect(page.locator('.my-class')).toBeVisible();
|
|
91
|
+
|
|
92
|
+
// Check element is hidden
|
|
93
|
+
await expect(page.locator('.loading')).toBeHidden();
|
|
94
|
+
|
|
95
|
+
// Check element contains text
|
|
96
|
+
await expect(page.locator('h1')).toContainText('Expected Title');
|
|
97
|
+
|
|
98
|
+
// Check element has exact text
|
|
99
|
+
await expect(page.locator('.status')).toHaveText('Active');
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Form Interactions
|
|
103
|
+
|
|
104
|
+
> **Deprecation notice:** `page.fill()`, `page.click()`, and `page.check()` are deprecated.
|
|
105
|
+
> Use the locator-based equivalents instead:
|
|
106
|
+
> - `page.fill(selector, value)` → `page.locator(selector).fill(value)`
|
|
107
|
+
> - `page.click(selector)` → `page.locator(selector).click()`
|
|
108
|
+
> - `page.check(selector)` → `page.locator(selector).check()`
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// Fill input
|
|
112
|
+
await page.locator('[data-testid="email-input"]').fill('test@example.com');
|
|
113
|
+
|
|
114
|
+
// Select from dropdown
|
|
115
|
+
await page.locator('select[name="country"]').selectOption('US');
|
|
116
|
+
|
|
117
|
+
// Click button
|
|
118
|
+
await page.locator('button[type="submit"]').click();
|
|
119
|
+
|
|
120
|
+
// Check checkbox
|
|
121
|
+
await page.locator('input[type="checkbox"]').check();
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Visual Regression Testing
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
// Screenshot comparison
|
|
128
|
+
test('visual regression - component state', async ({ page }) => {
|
|
129
|
+
await page.goto('/component-url');
|
|
130
|
+
|
|
131
|
+
// Wait for stability
|
|
132
|
+
// DEPRECATED: waitUntil: 'networkidle' / waitForLoadState('networkidle') is deprecated.
|
|
133
|
+
// Prefer waitUntil: 'load', waitForLoadState('load'), or explicit waitForSelector / UI state checks.
|
|
134
|
+
await page.waitForLoadState('load');
|
|
135
|
+
|
|
136
|
+
// Take screenshot
|
|
137
|
+
await expect(page).toHaveScreenshot('component-state.png', {
|
|
138
|
+
maxDiffPixels: 100
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Screenshot Configuration** in `playwright.config.ts`:
|
|
144
|
+
```typescript
|
|
145
|
+
expect: {
|
|
146
|
+
toHaveScreenshot: {
|
|
147
|
+
maxDiffPixels: 100,
|
|
148
|
+
threshold: 0.2,
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Responsive Testing
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
test('responsive layout', async ({ page }) => {
|
|
157
|
+
// Test mobile
|
|
158
|
+
await page.setViewportSize({ width: 375, height: 667 });
|
|
159
|
+
await page.goto('/');
|
|
160
|
+
await expect(page.locator('.mobile-menu')).toBeVisible();
|
|
161
|
+
|
|
162
|
+
// Test desktop
|
|
163
|
+
await page.setViewportSize({ width: 1280, height: 720 });
|
|
164
|
+
await page.goto('/');
|
|
165
|
+
await expect(page.locator('.desktop-nav')).toBeVisible();
|
|
166
|
+
});
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Test Data Attributes
|
|
170
|
+
|
|
171
|
+
Use `data-testid` for stable selectors:
|
|
172
|
+
```tsx
|
|
173
|
+
// Component
|
|
174
|
+
<button data-testid="submit-button">Submit</button>
|
|
175
|
+
|
|
176
|
+
// Test (page.click() is deprecated — use locator-based API)
|
|
177
|
+
await page.locator('[data-testid="submit-button"]').click();
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## API Mocking
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
import { test, expect } from '@playwright/test';
|
|
184
|
+
|
|
185
|
+
test('handles API error', async ({ page }) => {
|
|
186
|
+
// Mock API response
|
|
187
|
+
await page.route('**/api/users', async route => {
|
|
188
|
+
await route.fulfill({
|
|
189
|
+
status: 500,
|
|
190
|
+
body: JSON.stringify({ error: 'Server error' })
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
await page.goto('/users');
|
|
195
|
+
await expect(page.locator('.error-message')).toBeVisible();
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Authentication Patterns
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
test.describe('Authenticated Routes', () => {
|
|
203
|
+
test.use({ storageState: 'e2e/auth.json' });
|
|
204
|
+
|
|
205
|
+
test('access protected page', async ({ page }) => {
|
|
206
|
+
await page.goto('/dashboard');
|
|
207
|
+
await expect(page.locator('.dashboard')).toBeVisible();
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
// Setup auth in global setup
|
|
212
|
+
test('login flow', async ({ page }) => {
|
|
213
|
+
await page.goto('/login');
|
|
214
|
+
await page.locator('[data-testid="username"]').fill('user');
|
|
215
|
+
await page.locator('[data-testid="password"]').fill('pass');
|
|
216
|
+
await page.locator('[data-testid="login-button"]').click();
|
|
217
|
+
|
|
218
|
+
// Save state
|
|
219
|
+
await page.context().storageState({ path: 'e2e/auth.json' });
|
|
220
|
+
});
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Debugging Failed Tests
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# Run with trace
|
|
227
|
+
npx playwright test --trace on
|
|
228
|
+
|
|
229
|
+
# View trace
|
|
230
|
+
npx playwright show-trace test-results/trace.zip
|
|
231
|
+
|
|
232
|
+
# Run in debug mode
|
|
233
|
+
npx playwright test --debug
|
|
234
|
+
|
|
235
|
+
# Slow motion execution
|
|
236
|
+
npx playwright test --headed --slow-mo 1000
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## Common Issues and Solutions
|
|
240
|
+
|
|
241
|
+
### Flaky Tests
|
|
242
|
+
```typescript
|
|
243
|
+
// Add retry logic
|
|
244
|
+
await expect.poll(async () => {
|
|
245
|
+
const response = await page.evaluate(() => fetch('/api/status'));
|
|
246
|
+
return response.status;
|
|
247
|
+
}).toBe(200);
|
|
248
|
+
|
|
249
|
+
// DEPRECATED: waitForLoadState('networkidle') / waitUntil: 'networkidle' is deprecated.
|
|
250
|
+
// Prefer waitForLoadState('load') or explicit waitForSelector / UI state checks.
|
|
251
|
+
await page.waitForLoadState('load');
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Timing Issues
|
|
255
|
+
```typescript
|
|
256
|
+
// Wait for specific element
|
|
257
|
+
await page.waitForSelector('.loaded', { timeout: 10000 });
|
|
258
|
+
|
|
259
|
+
// Wait for request
|
|
260
|
+
await page.waitForRequest('**/api/data');
|
|
261
|
+
|
|
262
|
+
// Wait for response
|
|
263
|
+
await page.waitForResponse('**/api/data');
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Dynamic Content
|
|
267
|
+
```typescript
|
|
268
|
+
// Wait for text to appear
|
|
269
|
+
await page.waitForFunction(() => {
|
|
270
|
+
return document.querySelector('.status')?.textContent === 'Ready';
|
|
271
|
+
});
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Integration with Feature Analysis
|
|
275
|
+
|
|
276
|
+
When using Playwright with `feature-analyzer`:
|
|
277
|
+
|
|
278
|
+
1. **Visual Verification**: After code changes, run visual tests to detect UI regressions
|
|
279
|
+
2. **Flow Validation**: Test critical user flows affected by the feature
|
|
280
|
+
3. **Cross-browser Check**: Verify functionality in all supported browsers
|
|
281
|
+
4. **Responsive Check**: Ensure UI works across different viewports
|
|
282
|
+
|
|
283
|
+
```typescript
|
|
284
|
+
// Example: Testing a feature from analysis
|
|
285
|
+
test.describe('Feature: User Profile Update (from analysis)', () => {
|
|
286
|
+
test('validates profile form changes', async ({ page }) => {
|
|
287
|
+
// Based on analysis: test form validation
|
|
288
|
+
await page.goto('/profile');
|
|
289
|
+
|
|
290
|
+
// Clear and fill (as per DTO changes)
|
|
291
|
+
await page.locator('[data-testid="name-input"]').fill('New Name');
|
|
292
|
+
await page.locator('[data-testid="save-button"]').click();
|
|
293
|
+
|
|
294
|
+
// Verify success (as per API contract)
|
|
295
|
+
await expect(page.locator('.success-message')).toBeVisible();
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Output Contract
|
|
301
|
+
|
|
302
|
+
- Test files must be TypeScript
|
|
303
|
+
- Use descriptive test names
|
|
304
|
+
- Include Arrange-Act-Assert comments
|
|
305
|
+
- Provide trace/logs for failed tests
|
|
306
|
+
- Screenshots must be in `e2e/screenshots/`
|
|
307
|
+
|
|
308
|
+
## CI/CD Integration
|
|
309
|
+
|
|
310
|
+
```yaml
|
|
311
|
+
# Example CI step
|
|
312
|
+
- name: Run Playwright tests
|
|
313
|
+
run: npx playwright test
|
|
314
|
+
|
|
315
|
+
- name: Upload test results
|
|
316
|
+
uses: actions/upload-artifact@v4
|
|
317
|
+
if: always()
|
|
318
|
+
with:
|
|
319
|
+
name: playwright-report
|
|
320
|
+
path: playwright-report/
|
|
321
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Rules for creating and updating requirement documents with multilingual outputs."
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Requirements Management Rules
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Standardize how requirement sets are created and maintained.
|
|
10
|
+
|
|
11
|
+
## When To Apply
|
|
12
|
+
Apply when creating or updating requirement documents.
|
|
13
|
+
|
|
14
|
+
## Location
|
|
15
|
+
`<DOCS_ROOT>/requirements/<requirement-name>/<YYYY-MM-DD>/`
|
|
16
|
+
|
|
17
|
+
## Mandatory Behavior
|
|
18
|
+
1. Ask for target location and requirement folder name before writing.
|
|
19
|
+
2. Confirm naming convention before creation.
|
|
20
|
+
3. Always create a new date-stamped subfolder; do not overwrite old sets.
|
|
21
|
+
4. Generate synchronized `ru`, `en`, and `ai` versions.
|
|
22
|
+
5. Document assumptions and open questions explicitly.
|
|
23
|
+
|
|
24
|
+
## Output Contract
|
|
25
|
+
- Use Markdown (`.md`) only.
|
|
26
|
+
- Keep sections explicit: context, scope, requirements, constraints, open questions.
|
|
27
|
+
- Code snippets must be fenced code blocks.
|
|
28
|
+
|
|
29
|
+
## Workflow
|
|
30
|
+
1. Capture request.
|
|
31
|
+
2. Clarify folder/location.
|
|
32
|
+
3. Create folder structure.
|
|
33
|
+
4. Create all required language files.
|
|
34
|
+
5. Validate synchronization.
|
|
35
|
+
6. Ask whether to apply changes.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Defines Metaproject requirements package structure, versioning, verification and review rules."
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Requirements Package Standard
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Use this rule when creating or updating a requirements package under
|
|
11
|
+
`docs/requirements/<module-or-topic>/`.
|
|
12
|
+
|
|
13
|
+
## Required Core Files
|
|
14
|
+
|
|
15
|
+
Every module-level documentation package must contain:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
docs/requirements/<name>/
|
|
19
|
+
README.md
|
|
20
|
+
prd.md
|
|
21
|
+
specification.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Optional files are added only when the topic needs them:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
brainstorm.md
|
|
28
|
+
policies.md
|
|
29
|
+
agent-protocol.md
|
|
30
|
+
ci-protocol.md
|
|
31
|
+
artifact-lifecycle.md
|
|
32
|
+
metrics-and-validation.md
|
|
33
|
+
implementation-plan.md
|
|
34
|
+
schemas/*.json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Required Metadata
|
|
38
|
+
|
|
39
|
+
Every Markdown document must include:
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
Version: x.y.z
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The field must be directly under the H1. Increment the version whenever the
|
|
46
|
+
document changes.
|
|
47
|
+
|
|
48
|
+
## README Contract
|
|
49
|
+
|
|
50
|
+
`README.md` must state:
|
|
51
|
+
|
|
52
|
+
- package purpose;
|
|
53
|
+
- current status;
|
|
54
|
+
- document index;
|
|
55
|
+
- scope and non-goals;
|
|
56
|
+
- related modules.
|
|
57
|
+
|
|
58
|
+
## PRD Contract
|
|
59
|
+
|
|
60
|
+
`prd.md` must state:
|
|
61
|
+
|
|
62
|
+
- problem;
|
|
63
|
+
- goal;
|
|
64
|
+
- users;
|
|
65
|
+
- requirements;
|
|
66
|
+
- success criteria;
|
|
67
|
+
- risks;
|
|
68
|
+
- recommendation.
|
|
69
|
+
|
|
70
|
+
## Specification Contract
|
|
71
|
+
|
|
72
|
+
`specification.md` must state:
|
|
73
|
+
|
|
74
|
+
- module identity;
|
|
75
|
+
- storage structure;
|
|
76
|
+
- manifest/config shape;
|
|
77
|
+
- CLI or skill surface;
|
|
78
|
+
- data contracts;
|
|
79
|
+
- integration points;
|
|
80
|
+
- acceptance criteria.
|
|
81
|
+
|
|
82
|
+
## Verification Contract
|
|
83
|
+
|
|
84
|
+
Before finishing:
|
|
85
|
+
|
|
86
|
+
- verify required files exist;
|
|
87
|
+
- verify all Markdown files have `Version`;
|
|
88
|
+
- verify README links to all package files;
|
|
89
|
+
- verify schemas are referenced from specification when present;
|
|
90
|
+
- verify status is honest: `draft`, `spec ready`, `implemented`, or `future`;
|
|
91
|
+
- update `docs/requirements/roadmap.md` when the package represents a module or
|
|
92
|
+
standard capability.
|
|
93
|
+
|
|
94
|
+
## Review Contract
|
|
95
|
+
|
|
96
|
+
Documentation review must check:
|
|
97
|
+
|
|
98
|
+
- completeness against this rule;
|
|
99
|
+
- contradictions across README/PRD/spec;
|
|
100
|
+
- unsupported implementation claims;
|
|
101
|
+
- missing integration points;
|
|
102
|
+
- stale roadmap or version references;
|
|
103
|
+
- unsafe overpromising versus current implementation.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Baseline AI code review standards for correctness, architecture, safety, and maintainability."
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AI Code Review Assistant
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Provide strict, high-signal code reviews with actionable findings.
|
|
10
|
+
|
|
11
|
+
## When To Apply
|
|
12
|
+
Apply when performing AI-assisted code review; loaded automatically by the code-ai-review skill.
|
|
13
|
+
|
|
14
|
+
## Verdict Labels
|
|
15
|
+
|
|
16
|
+
All reviews must end with exactly one of the following verdict labels:
|
|
17
|
+
|
|
18
|
+
| Verdict | Meaning |
|
|
19
|
+
|---------|---------|
|
|
20
|
+
| `APPROVE` | Changes accepted as-is; no outstanding issues. |
|
|
21
|
+
| `APPROVE WITH SUGGESTIONS` | Accepted and can merge, but improvements are noted for follow-up. |
|
|
22
|
+
| `REQUEST CHANGES` | Must fix identified issues before merge. |
|
|
23
|
+
| `COMMENT` | Informational findings only; no blocking action required. |
|
|
24
|
+
|
|
25
|
+
## Review Output Structure
|
|
26
|
+
1. Verdict label (from the table above)
|
|
27
|
+
2. Findings by severity and category
|
|
28
|
+
3. Concrete fix proposals
|
|
29
|
+
4. Residual risks and test gaps
|
|
30
|
+
|
|
31
|
+
## Priority Categories
|
|
32
|
+
- Correctness
|
|
33
|
+
- Types and safety
|
|
34
|
+
- Architecture and state boundaries
|
|
35
|
+
- Performance
|
|
36
|
+
- UX/A11y
|
|
37
|
+
- Tests
|
|
38
|
+
|
|
39
|
+
## Mandatory Rules
|
|
40
|
+
- Prioritize correctness over style.
|
|
41
|
+
- Do not request massive refactors unless user asks.
|
|
42
|
+
- Flag unsafe casts and hidden complexity.
|
|
43
|
+
- Align suggestions with existing project patterns.
|
|
44
|
+
- Keep comments specific, respectful, and actionable.
|
|
45
|
+
|
|
46
|
+
## Output Contract
|
|
47
|
+
- Final review must be Markdown.
|
|
48
|
+
- Code snippets/diffs must be fenced code blocks.
|
|
49
|
+
- Response language follows user query language.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "boss-style review profile: direct, strict, architecture-first feedback with concrete fixes."
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# boss Review Profile
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Replicate the boss review style for requested reviews.
|
|
10
|
+
|
|
11
|
+
## When To Apply
|
|
12
|
+
Apply when user explicitly asks for review in boss style.
|
|
13
|
+
|
|
14
|
+
## Style Profile
|
|
15
|
+
- Direct and concise.
|
|
16
|
+
- Architecture-first.
|
|
17
|
+
- Strongly against duct-tape fixes.
|
|
18
|
+
- Focus on testability and single source of truth.
|
|
19
|
+
|
|
20
|
+
## What To Flag
|
|
21
|
+
- Business logic in UI instead of store/service.
|
|
22
|
+
- Duplicate rule checks in multiple places.
|
|
23
|
+
- Unsafe casts (`any`, disguised casts).
|
|
24
|
+
- Mocks inheriting production classes.
|
|
25
|
+
- Loading/no-data semantics confusion.
|
|
26
|
+
- Magic numbers without rationale.
|
|
27
|
+
- **Status/result mapping semantics**: Mapping "none" or absence-of-result to a semantic outcome (e.g. canceled, failed) without domain justification. Verify that source enum values (e.g. none, killed, cancelled) have distinct meanings and that the mapping preserves them; flag mappings that equate semantically different states (e.g. `none === canceled`, `killed === canceled` without explicit product rationale).
|
|
28
|
+
- **Store method accessibility** — See `core/mobx-store-template.mdc` for definitive rules on public vs private store methods. Key violations to flag:
|
|
29
|
+
- Public `onChangeX` / `handleX` methods (must be private)
|
|
30
|
+
- Public `action.bound` that should be private callbacks
|
|
31
|
+
|
|
32
|
+
## Response Format
|
|
33
|
+
1. Verdict in one line — use the canonical verdict vocabulary (same set as `core/code-review-ai-assistant.mdc`):
|
|
34
|
+
- `APPROVE` — no blocking issues; changes accepted as-is
|
|
35
|
+
- `APPROVE WITH SUGGESTIONS` — accepted but improvements noted for follow-up
|
|
36
|
+
- `REQUEST CHANGES` — has issues that must be fixed before merge
|
|
37
|
+
- `COMMENT` — informational findings only; no blocking action required
|
|
38
|
+
2. Top 1-3 blocking findings.
|
|
39
|
+
3. Concrete replacement/fix path.
|
|
40
|
+
|
|
41
|
+
## Guardrails
|
|
42
|
+
- No personal attacks.
|
|
43
|
+
- No empty nitpicks.
|
|
44
|
+
- Keep recommendations lint-safe and scoped.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Workflow for adding or editing rules in the AGENTS.mdc + rules/core structure."
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Rule Management Workflow
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Define a deterministic workflow for adding, editing, and syncing rules.
|
|
10
|
+
|
|
11
|
+
## Trigger
|
|
12
|
+
Apply when user asks to create, update, move, reorganize, or sync rules.
|
|
13
|
+
|
|
14
|
+
## Source of Truth
|
|
15
|
+
- Repository source: `.metaproject/rules`
|
|
16
|
+
- Root always-on file (plain): `AGENTS.md`
|
|
17
|
+
- Root always-on file (Cursor): `AGENTS.mdc` (frontmatter wrapper around AGENTS.md)
|
|
18
|
+
- Thematic files: `.metaproject/rules/core/*.mdc`
|
|
19
|
+
|
|
20
|
+
## Mandatory Clarification Step
|
|
21
|
+
Before creating or editing any rule, the agent MUST ask and confirm:
|
|
22
|
+
1. Target location
|
|
23
|
+
2. Target folder name
|
|
24
|
+
3. Rule file name (semantic, no numeric prefix)
|
|
25
|
+
4. Rule scope and trigger conditions
|
|
26
|
+
|
|
27
|
+
## Mandatory Behavior
|
|
28
|
+
1. Update or create thematic rule files only under `rules/core`.
|
|
29
|
+
2. Keep all rule files in English.
|
|
30
|
+
3. Keep frontmatter valid YAML.
|
|
31
|
+
4. If core files changed, update `AGENTS.md` catalog (and keep AGENTS.mdc in sync).
|
|
32
|
+
5. Run synchronization only after source files are updated.
|
|
33
|
+
|
|
34
|
+
## How to Run Synchronization
|
|
35
|
+
After editing rules under `.metaproject/rules/` or `AGENTS.md`, sync to all targets:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
keryx update
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Sync Targets
|
|
42
|
+
- `~/.cursor/rules/AGENTS.md` — Cursor global rules
|
|
43
|
+
- `~/.codex/AGENTS.md` — Codex global rules
|
|
44
|
+
- `~/.config/zed/AGENTS.md` — Zed global rules
|
|
45
|
+
- `~/.config/opencode/AGENTS.md` — OpenCode global rules
|
|
46
|
+
|
|
47
|
+
## Rule File Standard
|
|
48
|
+
Every core rule MUST include:
|
|
49
|
+
- Purpose
|
|
50
|
+
- When To Apply
|
|
51
|
+
- Mandatory Behavior
|
|
52
|
+
- Output Contract (when the rule defines user-facing deliverables)
|
|
53
|
+
- Optional examples
|
|
54
|
+
|
|
55
|
+
## Output Contract for Rule Work
|
|
56
|
+
- Any produced rule text must be Markdown.
|
|
57
|
+
- Any code example must be fenced.
|
|
58
|
+
- Final response language must follow user query language.
|
|
59
|
+
|
|
60
|
+
## Apply Changes Workflow
|
|
61
|
+
After rule changes, ask whether to apply changes.
|
|
62
|
+
If approved: create branch from `main`, commit, and open PR to `main`.
|