@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,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Subagent Status Protocol
|
|
3
|
+
category: agent-discipline
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
applies_to: all subagents dispatched by an orchestrator
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Subagent Status Protocol
|
|
9
|
+
|
|
10
|
+
## Why This Exists
|
|
11
|
+
|
|
12
|
+
Orchestrators cannot make good decisions based on free-text responses. When a subagent returns a wall of prose ending with "everything looks good", the orchestrator has three bad options: parse it, guess, or trust it blindly. All three fail at scale.
|
|
13
|
+
|
|
14
|
+
**Known failure modes this protocol prevents:**
|
|
15
|
+
|
|
16
|
+
- **Silent failures** — subagent hits a blocker, works around it, says "Done". Orchestrator continues. The workaround breaks something downstream.
|
|
17
|
+
- **Ambiguous "done"** — task is "complete" but half the acceptance criteria were skipped. Orchestrator only finds out during review.
|
|
18
|
+
- **Buried blockers** — "I couldn't find the config file so I assumed X" appears in paragraph 4. Orchestrator never re-dispatches with the right information.
|
|
19
|
+
- **Context gaps** — subagent guesses at missing context and gets it wrong. Four tasks downstream are now built on a wrong assumption.
|
|
20
|
+
|
|
21
|
+
This protocol makes subagent state machine-readable on the first line.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Iron Law
|
|
26
|
+
|
|
27
|
+
**THE FIRST LINE OF EVERY SUBAGENT FINAL RESPONSE MUST BE `STATUS: <STATUS>`**
|
|
28
|
+
|
|
29
|
+
No exceptions. No preamble. No "Here's my report:" before the status line.
|
|
30
|
+
|
|
31
|
+
If the first line is not `STATUS: <STATUS>`, the orchestrator MUST treat the response as `NEEDS_CONTEXT` and request a properly formatted response.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## The Four Statuses
|
|
36
|
+
|
|
37
|
+
### `DONE`
|
|
38
|
+
Task fully complete. All acceptance criteria met. Orchestrator can continue the pipeline.
|
|
39
|
+
|
|
40
|
+
### `DONE_WITH_CONCERNS`
|
|
41
|
+
Task complete, but the orchestrator should know something before continuing. This is NOT a failure — it is a completed task that carries information the orchestrator needs to make a good decision.
|
|
42
|
+
|
|
43
|
+
Use when:
|
|
44
|
+
- Implementation required a meaningful interpretation of ambiguous criteria
|
|
45
|
+
- A workaround was used for a non-blocking issue
|
|
46
|
+
- Something unexpected was discovered that may affect later steps
|
|
47
|
+
- Verification passed but with warnings the orchestrator should see
|
|
48
|
+
|
|
49
|
+
### `BLOCKED`
|
|
50
|
+
Cannot continue. A specific decision or action from the orchestrator is required before the subagent can make progress.
|
|
51
|
+
|
|
52
|
+
Use when:
|
|
53
|
+
- A required file, resource, or dependency does not exist
|
|
54
|
+
- Two valid approaches exist with significantly different tradeoffs and the subagent cannot choose alone
|
|
55
|
+
- A command failed in a way that requires orchestrator-level intervention (not a self-fixable error)
|
|
56
|
+
- The task scope needs to be clarified before proceeding
|
|
57
|
+
|
|
58
|
+
Do NOT use `BLOCKED` for errors you can fix yourself. Self-fix first (up to your retry limit), then report `BLOCKED` if still stuck.
|
|
59
|
+
|
|
60
|
+
### `NEEDS_CONTEXT`
|
|
61
|
+
Specific information is missing that would allow the subagent to proceed correctly. Different from `BLOCKED`: the subagent knows what it needs and believes the orchestrator has it.
|
|
62
|
+
|
|
63
|
+
Use when:
|
|
64
|
+
- A required input field in the task object is missing or empty
|
|
65
|
+
- Module patterns, library docs, or API signatures are needed but weren't provided
|
|
66
|
+
- The task references files or components that don't exist and no context explains them
|
|
67
|
+
- Acceptance criteria use terms not defined anywhere in the provided context
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Exact Response Formats
|
|
72
|
+
|
|
73
|
+
### `STATUS: DONE`
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
STATUS: DONE
|
|
77
|
+
|
|
78
|
+
## Completed
|
|
79
|
+
- [concrete list of what was done, one item per acceptance criterion]
|
|
80
|
+
|
|
81
|
+
## Files changed
|
|
82
|
+
- path/to/file — description of change
|
|
83
|
+
- path/to/other — description of change
|
|
84
|
+
|
|
85
|
+
## Verification
|
|
86
|
+
- lint: pass
|
|
87
|
+
- type-check: pass
|
|
88
|
+
- tests: 14 passed, 0 failed
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### `STATUS: DONE_WITH_CONCERNS`
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
STATUS: DONE_WITH_CONCERNS
|
|
95
|
+
|
|
96
|
+
## Completed
|
|
97
|
+
- [concrete list of what was done]
|
|
98
|
+
|
|
99
|
+
## Files changed
|
|
100
|
+
- path/to/file — description of change
|
|
101
|
+
|
|
102
|
+
## Concerns for orchestrator
|
|
103
|
+
- [specific concern] — [why it matters and what the orchestrator might want to do about it]
|
|
104
|
+
- [second concern if any]
|
|
105
|
+
|
|
106
|
+
## Verification
|
|
107
|
+
- lint: pass
|
|
108
|
+
- type-check: pass
|
|
109
|
+
- tests: 14 passed, 0 failed
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### `STATUS: BLOCKED`
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
STATUS: BLOCKED
|
|
116
|
+
|
|
117
|
+
## Reason
|
|
118
|
+
[One specific blocker, stated plainly. Not a list of everything that could go wrong — just the one thing stopping progress right now.]
|
|
119
|
+
|
|
120
|
+
## What I need from orchestrator
|
|
121
|
+
[Specific ask. "Please provide X" or "Please decide between A and B" — not "more information".]
|
|
122
|
+
|
|
123
|
+
## Work completed so far
|
|
124
|
+
- [list anything that was finished before hitting the blocker, so the orchestrator knows what to preserve]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### `STATUS: NEEDS_CONTEXT`
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
STATUS: NEEDS_CONTEXT
|
|
131
|
+
|
|
132
|
+
## Missing information
|
|
133
|
+
[What specifically is needed — name the field, file, pattern, or decision that is absent.]
|
|
134
|
+
|
|
135
|
+
## Where it might be found
|
|
136
|
+
[Suggestion: "likely in package.json", "the context-collector output", "the issue body", etc.]
|
|
137
|
+
|
|
138
|
+
## Work completed so far
|
|
139
|
+
- [list anything that was finished before the gap was discovered]
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## What the Orchestrator Does for Each Status
|
|
145
|
+
|
|
146
|
+
| Status | Orchestrator action |
|
|
147
|
+
|--------|---------------------|
|
|
148
|
+
| `DONE` | Accept result. Extract files changed, commits, verification results. Continue to next step. |
|
|
149
|
+
| `DONE_WITH_CONCERNS` | Read concerns section. Decide: (a) continue as-is, (b) note concern for later step, or (c) re-dispatch with adjusted scope. Do NOT silently discard concerns. |
|
|
150
|
+
| `BLOCKED` | Stop pipeline on this task. Resolve the specific blocker (provide the file, make the decision, fix the dependency). Re-dispatch. Do NOT proceed to dependent steps while blocked. |
|
|
151
|
+
| `NEEDS_CONTEXT` | Provide the missing information. Re-dispatch the task with the enriched context. If the information is not available, escalate to user. |
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Red Flags — Rationalizations That Must Be Rejected
|
|
156
|
+
|
|
157
|
+
The following thoughts indicate a subagent is about to violate the protocol. Reject them before writing the response.
|
|
158
|
+
|
|
159
|
+
- **"The result is obvious, I'll just say Done"** — If you are summarizing the result in prose and appending "Done" at the end, you are not following the protocol. Move `STATUS: DONE` to the first line and structure the rest.
|
|
160
|
+
|
|
161
|
+
- **"I'll add a note at the end instead of BLOCKED"** — Notes at the end are invisible to automated orchestrators. If you are blocked, the status must be `BLOCKED`. The note goes in the `## Reason` field.
|
|
162
|
+
|
|
163
|
+
- **"It's mostly done, DONE_WITH_CONCERNS feels like admitting failure"** — `DONE_WITH_CONCERNS` is not a failure status. It is a success status with an attached signal. Use it freely when something is worth the orchestrator knowing.
|
|
164
|
+
|
|
165
|
+
- **"NEEDS_CONTEXT would slow things down, I'll just guess"** — Guessing propagates errors downstream. One `NEEDS_CONTEXT` and a re-dispatch is cheaper than four tasks built on a wrong assumption.
|
|
166
|
+
|
|
167
|
+
- **"I didn't meet one criterion but I'll say DONE and mention it in notes"** — If an acceptance criterion is not met, the status is not `DONE`. Use `DONE_WITH_CONCERNS` and name the unmet criterion in the concerns section.
|
|
168
|
+
|
|
169
|
+
- **"The orchestrator will figure it out from my explanation"** — The orchestrator reads `STATUS:` on line 1. Everything else is secondary. Do not make the orchestrator parse free text to determine the outcome.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "TDD workflow rules: red-green-refactor cycle, test-first mandate, no-done-without-green invariant. Use when implementing features, fixing bugs, or verifying acceptance criteria."
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TDD Workflow
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Enforce Test-Driven Development: tests are written before implementation code. An agent MUST NOT claim `STATUS: DONE` unless all tests pass.
|
|
10
|
+
|
|
11
|
+
## When To Apply
|
|
12
|
+
Apply during any implementation task. Always loaded alongside `task-implementer` and `tests-creator` workflows.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## The Red-Green-Refactor Cycle
|
|
17
|
+
|
|
18
|
+
Every implementation must follow this exact sequence:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
1. RED → Write a failing test that describes the desired behaviour
|
|
22
|
+
2. GREEN → Write the minimal code to make that test pass
|
|
23
|
+
3. REFACTOR → Clean up code without breaking the test
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**CRITICAL: Never skip RED.** Writing code before a failing test exists violates TDD. Even if the test seems trivial, it must be written first.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Mandatory Steps
|
|
31
|
+
|
|
32
|
+
### Step 1: Receive Acceptance Criteria
|
|
33
|
+
- Parse `acceptance_criteria` from the task object (provided by `issue-analyzer` or `tests-creator`)
|
|
34
|
+
- Each criterion maps to ≥1 test case
|
|
35
|
+
- If no criteria exist, derive them from the task description before proceeding
|
|
36
|
+
|
|
37
|
+
### Step 2: Run tests-creator (or use pre-generated specs)
|
|
38
|
+
- If `test_case_specs` are provided in the task object → use them directly
|
|
39
|
+
- If not → invoke `tests-creator` to generate specs before writing any code
|
|
40
|
+
- **DO NOT start implementation until test specs are confirmed**
|
|
41
|
+
|
|
42
|
+
### Step 3: Write tests (RED phase)
|
|
43
|
+
- Create test file(s) at the correct location (co-located or in `__tests__/`)
|
|
44
|
+
- Run the test suite — confirm tests FAIL for the right reason
|
|
45
|
+
- A test that passes before implementation is a broken test
|
|
46
|
+
|
|
47
|
+
### Step 4: Implement (GREEN phase)
|
|
48
|
+
- Write the minimal code to satisfy each failing test
|
|
49
|
+
- Do not add features not covered by tests
|
|
50
|
+
- Run tests after each logical chunk — do not batch all implementation before running
|
|
51
|
+
|
|
52
|
+
### Step 5: Refactor
|
|
53
|
+
- Clean up code: extract helpers, rename variables, remove duplication
|
|
54
|
+
- Re-run full test suite after every refactor step
|
|
55
|
+
- Refactoring is complete only when all tests are green
|
|
56
|
+
|
|
57
|
+
### Step 6: Verify and Report
|
|
58
|
+
- Final `bun test` / `npm test` / `pytest` / equivalent must pass with 0 failures
|
|
59
|
+
- Include test output summary in the result object
|
|
60
|
+
- Report `STATUS: DONE` only when all criteria are covered by passing tests
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Output Contract Extension
|
|
65
|
+
|
|
66
|
+
When reporting task completion, include:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
tests_written: <N>
|
|
70
|
+
tests_passing: <N>
|
|
71
|
+
tests_failing: 0
|
|
72
|
+
coverage_notes: "<which acceptance criteria are covered>"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Iron Laws
|
|
78
|
+
|
|
79
|
+
**IRON LAW 1: NEVER claim STATUS: DONE with failing tests. Zero exceptions.**
|
|
80
|
+
**IRON LAW 2: NEVER write implementation before a failing test exists for that behaviour.**
|
|
81
|
+
**IRON LAW 3: NEVER delete tests to make the suite green. Fix the code instead.**
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Red Flags — Stop and re-read this rule if you are thinking:
|
|
86
|
+
|
|
87
|
+
| Rationalization | Why it's wrong |
|
|
88
|
+
|---|---|
|
|
89
|
+
| "The logic is simple, I don't need a test first" | Simplicity is never a reason to skip TDD — the cycle builds confidence, not just test coverage |
|
|
90
|
+
| "I'll add tests after to save time" | Tests written after implementation verify what the code does, not what it should do |
|
|
91
|
+
| "The tests are flaky, I'll skip them for now" | Flaky tests signal real design problems — fix the flakiness, not the test |
|
|
92
|
+
| "All the important logic is covered, a few edge tests can wait" | Untested edge cases are exactly where bugs live |
|
|
93
|
+
| "I'll mark it DONE and add tests in a follow-up PR" | STATUS: DONE means done — not "done except for tests" |
|
|
94
|
+
| "The test framework setup is complex, I'll just verify manually" | Manual verification is not reproducible and cannot be reviewed by other agents |
|
|
95
|
+
|
|
96
|
+
**IRON LAW: AN AGENT THAT SHIPS CODE WITHOUT PASSING TESTS HAS NOT COMPLETED ITS TASK.**
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-verifier
|
|
3
|
+
description: "Full quality gate: lint, type-check, tests, circular imports. Mandatory post-implementation step in job-orchestrator. Use when: verifying code after implementation, running quality gate before review, checking code health standalone."
|
|
4
|
+
triggers:
|
|
5
|
+
- "Run verification"
|
|
6
|
+
- "Quality gate"
|
|
7
|
+
- "Run lint and tests"
|
|
8
|
+
- "Verify implementation"
|
|
9
|
+
metadata:
|
|
10
|
+
author: "MrCipherSmith"
|
|
11
|
+
version: "1.0.0"
|
|
12
|
+
category: "verification"
|
|
13
|
+
license: "MIT"
|
|
14
|
+
compatibility: "cursor,codex,zed,opencode"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Code Verifier
|
|
18
|
+
|
|
19
|
+
Full quality gate: lint → type-check → tests → circular imports.
|
|
20
|
+
|
|
21
|
+
**Position:** task-implementer → **code-verifier** → review
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
1. Detect PM and tooling (bun/npm/pnpm/yarn/python/go)
|
|
25
|
+
2. Run lint (ESLint/Biome/ruff)
|
|
26
|
+
3. Run type-check (tsc --noEmit / mypy / pyright)
|
|
27
|
+
4. Run tests (vitest/jest/pytest/go test)
|
|
28
|
+
5. Check circular imports (madge, if available)
|
|
29
|
+
6. Classify findings by severity, determine gate
|
|
30
|
+
7. Emit VERIFICATION_RESULT
|
|
31
|
+
|
|
32
|
+
## Gate
|
|
33
|
+
- CRITICAL (type errors, test failures) or HIGH (lint errors, cycles) → GATE: FAIL
|
|
34
|
+
- LOW only → GATE: PASS_WITH_WARNINGS
|
|
35
|
+
|
|
36
|
+
## Output
|
|
37
|
+
```
|
|
38
|
+
VERIFICATION_RESULT:
|
|
39
|
+
gate: PASS | PASS_WITH_WARNINGS | FAIL
|
|
40
|
+
checks: { lint, type_check, tests, circular_imports }
|
|
41
|
+
findings: [{ severity, check, file, line, rule, message }]
|
|
42
|
+
summary: "..."
|
|
43
|
+
|
|
44
|
+
STATUS: DONE
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Full spec: `.metaproject/skills/gdskills/orchestration/code-verifier/SKILL.md`
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-verifier
|
|
3
|
+
description: "Full quality gate: lint, type-check, tests, circular imports. Mandatory post-implementation step in job-orchestrator. Use when: verifying code after implementation, running quality gate before review, checking code health standalone."
|
|
4
|
+
triggers:
|
|
5
|
+
- "Run verification"
|
|
6
|
+
- "Quality gate"
|
|
7
|
+
- "Run lint and tests"
|
|
8
|
+
- "Verify implementation"
|
|
9
|
+
- "Run checks"
|
|
10
|
+
metadata:
|
|
11
|
+
author: "MrCipherSmith"
|
|
12
|
+
version: "1.0.0"
|
|
13
|
+
category: "verification"
|
|
14
|
+
license: "MIT"
|
|
15
|
+
compatibility: "cursor,codex,zed,opencode"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Code Verifier
|
|
19
|
+
|
|
20
|
+
Quality gate sub-agent: lint → type-check → tests → circular imports.
|
|
21
|
+
|
|
22
|
+
**Pipeline position:** task-implementer → **code-verifier** → review
|
|
23
|
+
|
|
24
|
+
## Phases
|
|
25
|
+
1. **DETECT** — auto-detect PM (bun/pnpm/npm/yarn/python/go), available check commands
|
|
26
|
+
2. **RUN** — lint → type-check → tests → circular-import check (all, never abort early)
|
|
27
|
+
3. **ANALYZE** — classify findings: CRITICAL (type errors, test failures) | HIGH (lint errors, cycles) | LOW (warnings)
|
|
28
|
+
4. **REPORT** — emit `VERIFICATION_RESULT`
|
|
29
|
+
|
|
30
|
+
## Gate Logic
|
|
31
|
+
```
|
|
32
|
+
CRITICAL or HIGH findings → GATE: FAIL (orchestrator triggers fix)
|
|
33
|
+
LOW/INFO only → GATE: PASS_WITH_WARNINGS
|
|
34
|
+
No findings → GATE: PASS
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Output
|
|
38
|
+
```
|
|
39
|
+
VERIFICATION_RESULT:
|
|
40
|
+
gate: PASS | PASS_WITH_WARNINGS | FAIL
|
|
41
|
+
checks:
|
|
42
|
+
lint: { status, errors, warnings, command_used }
|
|
43
|
+
type_check: { status, errors, command_used }
|
|
44
|
+
tests: { status, passed, failed, skipped, command_used }
|
|
45
|
+
circular_imports: { status, cycles }
|
|
46
|
+
findings:
|
|
47
|
+
- { severity, check, file, line, rule, message }
|
|
48
|
+
summary: "<human-readable>"
|
|
49
|
+
|
|
50
|
+
STATUS: DONE | DONE_WITH_CONCERNS | BLOCKED
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Key rule:** Always run ALL checks even if one fails — orchestrator needs complete picture.
|
|
54
|
+
|
|
55
|
+
Full spec: `.metaproject/skills/gdskills/orchestration/code-verifier/SKILL.md`
|