@mrciphersmith/keryx 0.2.98 → 0.2.100
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/dist/cli.js +4605 -2695
- package/dist/core.js +39 -1
- package/package.json +1 -1
- package/src/gdskills/bundled/rules/core/cli-interface-design.mdc +237 -0
- package/src/gdskills/bundled/rules/core/definition-of-done.mdc +116 -0
- package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +101 -11
- package/src/gdskills/bundled/rules/core/subagent-status-protocol.md +9 -2
- package/src/gdskills/bundled/skills/core/reviewer-skill-creator/SKILL.md +42 -5
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +19 -3
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +20 -4
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +32 -9
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +18 -4
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +21 -5
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +4 -4
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +42 -2
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +23 -9
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +33 -31
- package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +32 -1
- package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +17 -0
- package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +28 -3
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +17 -0
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +17 -0
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +17 -0
- package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +32 -2
- package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +14 -2
- package/src/gdskills/bundled/skills/planning/interview/SKILL.md +29 -7
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +32 -6
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +16 -0
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +16 -0
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +17 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +17 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.md +17 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +20 -3
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +16 -0
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +16 -0
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +16 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +16 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +4 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +4 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +4 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +4 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +4 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +4 -0
- package/src/gdskills/bundled/skills/platform/agent-entrypoint-distiller/SKILL.md +31 -4
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +26 -2
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +28 -3
- package/src/gdskills/bundled/skills/quality/api-truth/SKILL.md +226 -0
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +24 -4
- package/src/gdskills/bundled/skills/quality/commit/SKILL.md +24 -3
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +24 -3
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +25 -4
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +26 -3
- package/src/gdskills/bundled/skills/quality/deprecation-path/SKILL.md +268 -0
- package/src/gdskills/bundled/skills/quality/fresh-eyes/SKILL.md +190 -0
- package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +24 -3
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +29 -8
- package/src/gdskills/bundled/skills/quality/pr/SKILL.md +24 -4
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +25 -2
- package/src/gdskills/bundled/skills/quality/push/SKILL.md +24 -3
- package/src/gdskills/bundled/skills/quality/root-cause/SKILL.md +204 -0
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +25 -4
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +24 -3
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +17 -2
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +40 -5
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +41 -1
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +44 -2
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +44 -4
- package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +3 -3
- package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +2 -3
- package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +4 -4
- package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +36 -2
- package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +37 -3
- package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +2 -4
- package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +36 -2
- package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +3 -5
- package/src/gdskills/bundled/skills/review/review-layout/SKILL.md +23 -2
- package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +3 -3
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +9 -29
- package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +9 -9
- package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +3 -2
- package/src/gdskills/bundled/skills/review/review-regression/SKILL.md +33 -2
- package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +4 -2
- package/src/gdskills/bundled/skills/review/review-style/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +40 -2
- package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +0 -330
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +0 -330
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +0 -330
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +0 -330
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +0 -655
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +0 -655
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +0 -655
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +0 -655
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +0 -424
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +0 -424
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +0 -424
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +0 -424
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +0 -163
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +0 -163
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +0 -373
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +0 -373
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +0 -373
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +0 -373
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +0 -374
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +0 -374
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +0 -374
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +0 -374
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +0 -2232
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +0 -2232
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +0 -2232
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +0 -2232
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +0 -668
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +0 -668
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +0 -668
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +0 -668
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +0 -90
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +0 -90
- package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +0 -187
- package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +0 -187
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +0 -105
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +0 -105
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +0 -193
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +0 -193
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +0 -193
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +0 -193
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +0 -87
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +0 -87
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +0 -100
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +0 -100
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +0 -84
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +0 -84
- package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +0 -66
- package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +0 -66
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +0 -66
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +0 -66
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +0 -81
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +0 -81
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +0 -70
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +0 -70
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +0 -83
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +0 -83
- package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +0 -75
- package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +0 -75
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +0 -378
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +0 -378
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +0 -378
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +0 -378
- package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +0 -52
- package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +0 -52
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +0 -108
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +0 -108
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +0 -80
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +0 -80
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +0 -345
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +0 -345
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +0 -345
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +0 -345
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +0 -203
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +0 -203
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +0 -203
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +0 -203
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +0 -243
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +0 -243
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +0 -243
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +0 -243
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +0 -259
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +0 -259
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +0 -259
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +0 -259
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +0 -168
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +0 -168
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +0 -168
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +0 -168
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Generates roadmap, milestones, task breakdown, and dependency graph from PRD.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 6.
|
|
6
6
|
NOT for: direct user invocation.
|
|
7
|
+
triggers:
|
|
8
|
+
- "create plan"
|
|
9
|
+
- "roadmap"
|
|
10
|
+
- "task breakdown"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -28,6 +32,19 @@ to feed into job-orchestrator or task-implementer.
|
|
|
28
32
|
| 5 | Each milestone MUST be independently deployable / demonstrable |
|
|
29
33
|
| 6 | Infrastructure and setup tasks come before feature tasks |
|
|
30
34
|
|
|
35
|
+
## Red Flags
|
|
36
|
+
|
|
37
|
+
Stop and re-read this skill if you are thinking:
|
|
38
|
+
|
|
39
|
+
| Rationalization | Rebuttal |
|
|
40
|
+
|---|---|
|
|
41
|
+
| "This task is obviously needed even though no user story asks for it." | Iron Law 1: every task traces to a user story. An untraceable task is either scope the PRD did not agree to, or a story the PRD is missing — both are worth surfacing, and neither is fixed by adding the task quietly. |
|
|
42
|
+
| "A single estimate is clearer to read than a three-point range." | Iron Law 3: estimates are ranges. A single number is read as a commitment, and the pessimistic case — the one that decides whether the milestone holds — was never stated. |
|
|
43
|
+
| "These two tasks depend on each other, which is just how the work is." | Iron Law 2: dependencies form a DAG. A cycle means the decomposition is wrong, not that the work is circular. Split one task at the boundary where it stops needing the other. |
|
|
44
|
+
| "Milestone 1 is already large, so this P0 story can move to Milestone 2." | Iron Law 4: P0 stories are in Milestone 1. If M1 is too large, the split goes elsewhere — deferring a P0 silently redefines what the PRD called essential. |
|
|
45
|
+
| "Milestone 2 is a coherent chunk of work, even if it demos nothing on its own." | Iron Law 5: each milestone is independently deployable or demonstrable. A milestone with no demo has no completion signal, and slips are invisible until the next one that does. |
|
|
46
|
+
| "Setup is boring — the feature tasks are what matters for the estimate." | Iron Law 6: infrastructure and setup come first, and they are estimated like anything else. Unestimated setup is the most common reason a critical path is wrong from day one. |
|
|
47
|
+
|
|
31
48
|
---
|
|
32
49
|
|
|
33
50
|
## Input Contract
|
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Generates roadmap, milestones, task breakdown, and dependency graph from PRD.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 6.
|
|
6
6
|
NOT for: direct user invocation.
|
|
7
|
+
triggers:
|
|
8
|
+
- "create plan"
|
|
9
|
+
- "roadmap"
|
|
10
|
+
- "task breakdown"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -28,6 +32,19 @@ to feed into job-orchestrator or task-implementer.
|
|
|
28
32
|
| 5 | Each milestone MUST be independently deployable / demonstrable |
|
|
29
33
|
| 6 | Infrastructure and setup tasks come before feature tasks |
|
|
30
34
|
|
|
35
|
+
## Red Flags
|
|
36
|
+
|
|
37
|
+
Stop and re-read this skill if you are thinking:
|
|
38
|
+
|
|
39
|
+
| Rationalization | Rebuttal |
|
|
40
|
+
|---|---|
|
|
41
|
+
| "This task is obviously needed even though no user story asks for it." | Iron Law 1: every task traces to a user story. An untraceable task is either scope the PRD did not agree to, or a story the PRD is missing — both are worth surfacing, and neither is fixed by adding the task quietly. |
|
|
42
|
+
| "A single estimate is clearer to read than a three-point range." | Iron Law 3: estimates are ranges. A single number is read as a commitment, and the pessimistic case — the one that decides whether the milestone holds — was never stated. |
|
|
43
|
+
| "These two tasks depend on each other, which is just how the work is." | Iron Law 2: dependencies form a DAG. A cycle means the decomposition is wrong, not that the work is circular. Split one task at the boundary where it stops needing the other. |
|
|
44
|
+
| "Milestone 1 is already large, so this P0 story can move to Milestone 2." | Iron Law 4: P0 stories are in Milestone 1. If M1 is too large, the split goes elsewhere — deferring a P0 silently redefines what the PRD called essential. |
|
|
45
|
+
| "Milestone 2 is a coherent chunk of work, even if it demos nothing on its own." | Iron Law 5: each milestone is independently deployable or demonstrable. A milestone with no demo has no completion signal, and slips are invisible until the next one that does. |
|
|
46
|
+
| "Setup is boring — the feature tasks are what matters for the estimate." | Iron Law 6: infrastructure and setup come first, and they are estimated like anything else. Unestimated setup is the most common reason a critical path is wrong from day one. |
|
|
47
|
+
|
|
31
48
|
---
|
|
32
49
|
|
|
33
50
|
## Input Contract
|
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Generates roadmap, milestones, task breakdown, and dependency graph from PRD.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 6.
|
|
6
6
|
NOT for: direct user invocation.
|
|
7
|
+
triggers:
|
|
8
|
+
- "create plan"
|
|
9
|
+
- "roadmap"
|
|
10
|
+
- "task breakdown"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
---
|
|
@@ -27,6 +31,19 @@ to feed into job-orchestrator or task-implementer.
|
|
|
27
31
|
| 5 | Each milestone MUST be independently deployable / demonstrable |
|
|
28
32
|
| 6 | Infrastructure and setup tasks come before feature tasks |
|
|
29
33
|
|
|
34
|
+
## Red Flags
|
|
35
|
+
|
|
36
|
+
Stop and re-read this skill if you are thinking:
|
|
37
|
+
|
|
38
|
+
| Rationalization | Rebuttal |
|
|
39
|
+
|---|---|
|
|
40
|
+
| "This task is obviously needed even though no user story asks for it." | Iron Law 1: every task traces to a user story. An untraceable task is either scope the PRD did not agree to, or a story the PRD is missing — both are worth surfacing, and neither is fixed by adding the task quietly. |
|
|
41
|
+
| "A single estimate is clearer to read than a three-point range." | Iron Law 3: estimates are ranges. A single number is read as a commitment, and the pessimistic case — the one that decides whether the milestone holds — was never stated. |
|
|
42
|
+
| "These two tasks depend on each other, which is just how the work is." | Iron Law 2: dependencies form a DAG. A cycle means the decomposition is wrong, not that the work is circular. Split one task at the boundary where it stops needing the other. |
|
|
43
|
+
| "Milestone 1 is already large, so this P0 story can move to Milestone 2." | Iron Law 4: P0 stories are in Milestone 1. If M1 is too large, the split goes elsewhere — deferring a P0 silently redefines what the PRD called essential. |
|
|
44
|
+
| "Milestone 2 is a coherent chunk of work, even if it demos nothing on its own." | Iron Law 5: each milestone is independently deployable or demonstrable. A milestone with no demo has no completion signal, and slips are invisible until the next one that does. |
|
|
45
|
+
| "Setup is boring — the feature tasks are what matters for the estimate." | Iron Law 6: infrastructure and setup come first, and they are estimated like anything else. Unestimated setup is the most common reason a critical path is wrong from day one. |
|
|
46
|
+
|
|
30
47
|
---
|
|
31
48
|
|
|
32
49
|
## Input Contract
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prd-creator
|
|
3
|
-
description: "Use when a vague or unstructured request needs to be converted into a formal, testable Product Requirements Document."
|
|
3
|
+
description: "Use when a vague or unstructured request needs to be converted into a formal, testable Product Requirements Document. NOT for: exploring which option to build before requirements exist (use brainstorm)."
|
|
4
4
|
triggers:
|
|
5
|
-
- "
|
|
5
|
+
- "create PRD"
|
|
6
|
+
- "product requirements"
|
|
7
|
+
- "specify feature"
|
|
6
8
|
- "Formulate requirements"
|
|
7
9
|
- "Write a product requirements document"
|
|
8
10
|
- "Draft PRD"
|
|
@@ -184,7 +186,22 @@ Before finalizing PRD, the agent MUST verify:
|
|
|
184
186
|
|
|
185
187
|
---
|
|
186
188
|
|
|
187
|
-
## 9.
|
|
189
|
+
## 9. Red Flags
|
|
190
|
+
|
|
191
|
+
Stop and re-read this skill if you are thinking:
|
|
192
|
+
|
|
193
|
+
| Rationalization | Rebuttal |
|
|
194
|
+
|---|---|
|
|
195
|
+
| "The request is detailed, so there is nothing left to clarify." | Detail settles *what* to build; it almost never states non-goals, constraints, or how the result will be verified. Those are three of the six checklist items in Section 8, and a long request that omits them is exactly as ambiguous as a short one. |
|
|
196
|
+
| "The missing constraint follows obviously from the stack, so I'll fill it in." | "The agent MUST NOT assume missing context" is a Section 2 prohibition, not advice. An inferred constraint reads in the finished PRD exactly like a confirmed one, and nothing downstream can tell them apart. Ask, or leave the gap visible. |
|
|
197
|
+
| "The acceptance criteria describe the behaviour clearly, so Gherkin is just formatting." | Gherkin forces a concrete Given (the precondition) and a concrete Then (the observable outcome). Prose AC passes review while hiding both. Untestable criteria are a NO on the checklist and block finalization. |
|
|
198
|
+
| "Five of the six checklist items are yes, so I'll finalize and note the sixth." | Any NO stops finalization. A PRD with a noted gap ships as a finished document and the note is the first thing dropped when it is summarized downstream. |
|
|
199
|
+
| "A PRD for this feature already exists, so I'll write mine alongside it." | Section 6 requires updating `prd.md` in place and bumping its `Version`. Two PRDs for one feature means the implementer picks one, and it will not always be the newer. |
|
|
200
|
+
| "I have asked 7 questions and ambiguity remains, so I'll write the PRD as best I can." | The 7-question limit is per iteration, not per request. Return the remaining questions to the user or orchestrator and run another round. |
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 10. Intended Usage
|
|
188
205
|
|
|
189
206
|
Designed for multi-agent orchestration pipelines, such as:
|
|
190
207
|
|
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Defines core problems, goals, non-goals, and success metrics from discovery data.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 1.
|
|
6
6
|
NOT for: direct user invocation.
|
|
7
|
+
triggers:
|
|
8
|
+
- "define problem"
|
|
9
|
+
- "goals non-goals"
|
|
10
|
+
- "success metrics"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -26,6 +30,18 @@ This phase answers: "Why are we doing this?" and "How will we know we succeeded?
|
|
|
26
30
|
| 4 | NEVER introduce solutions in the problem statement |
|
|
27
31
|
| 5 | If discovery brief has low confidence areas, flag them — don't paper over |
|
|
28
32
|
|
|
33
|
+
## Red Flags
|
|
34
|
+
|
|
35
|
+
Stop and re-read this skill if you are thinking:
|
|
36
|
+
|
|
37
|
+
| Rationalization | Rebuttal |
|
|
38
|
+
|---|---|
|
|
39
|
+
| "'Improve onboarding' is a real goal — the metric can come later." | Iron Law 1: every goal carries a measurable success metric, here. Phase 5 checks each user story against a goal's metric; a goal without one passes every check by being uncheckable. |
|
|
40
|
+
| "The obvious fix is a dashboard, so the problem is 'users have no dashboard'." | Iron Law 4: no solutions in the problem statement. A problem phrased as a missing solution pre-decides the PRD, and the stack and architecture phases then optimise for the wrong thing with nothing to notice. |
|
|
41
|
+
| "Non-goals are filler — two obvious ones are enough." | Iron Law 2 sets a floor of three, and non-goals are the only part of this document that stops scope growth later. The useful ones are the plausible features you are deliberately not building, not the absurd ones. |
|
|
42
|
+
| "The discovery brief was thin on this area, but I can reason my way to the goal." | Iron Law 5: flag low-confidence areas. Reasoning over a gap produces a goal that reads as firm as the evidenced ones, and no later phase can tell them apart. |
|
|
43
|
+
| "This problem is really about the database schema, which is the true root cause." | Iron Law 3: problems are stated from the user's perspective. A technical root cause belongs in the architecture phase; stated here it becomes the thing success is measured against, instead of what the user experiences. |
|
|
44
|
+
|
|
29
45
|
---
|
|
30
46
|
|
|
31
47
|
## Input Contract
|
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Defines core problems, goals, non-goals, and success metrics from discovery data.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 1.
|
|
6
6
|
NOT for: direct user invocation.
|
|
7
|
+
triggers:
|
|
8
|
+
- "define problem"
|
|
9
|
+
- "goals non-goals"
|
|
10
|
+
- "success metrics"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -26,6 +30,18 @@ This phase answers: "Why are we doing this?" and "How will we know we succeeded?
|
|
|
26
30
|
| 4 | NEVER introduce solutions in the problem statement |
|
|
27
31
|
| 5 | If discovery brief has low confidence areas, flag them — don't paper over |
|
|
28
32
|
|
|
33
|
+
## Red Flags
|
|
34
|
+
|
|
35
|
+
Stop and re-read this skill if you are thinking:
|
|
36
|
+
|
|
37
|
+
| Rationalization | Rebuttal |
|
|
38
|
+
|---|---|
|
|
39
|
+
| "'Improve onboarding' is a real goal — the metric can come later." | Iron Law 1: every goal carries a measurable success metric, here. Phase 5 checks each user story against a goal's metric; a goal without one passes every check by being uncheckable. |
|
|
40
|
+
| "The obvious fix is a dashboard, so the problem is 'users have no dashboard'." | Iron Law 4: no solutions in the problem statement. A problem phrased as a missing solution pre-decides the PRD, and the stack and architecture phases then optimise for the wrong thing with nothing to notice. |
|
|
41
|
+
| "Non-goals are filler — two obvious ones are enough." | Iron Law 2 sets a floor of three, and non-goals are the only part of this document that stops scope growth later. The useful ones are the plausible features you are deliberately not building, not the absurd ones. |
|
|
42
|
+
| "The discovery brief was thin on this area, but I can reason my way to the goal." | Iron Law 5: flag low-confidence areas. Reasoning over a gap produces a goal that reads as firm as the evidenced ones, and no later phase can tell them apart. |
|
|
43
|
+
| "This problem is really about the database schema, which is the true root cause." | Iron Law 3: problems are stated from the user's perspective. A technical root cause belongs in the architecture phase; stated here it becomes the thing success is measured against, instead of what the user experiences. |
|
|
44
|
+
|
|
29
45
|
---
|
|
30
46
|
|
|
31
47
|
## Input Contract
|
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Defines core problems, goals, non-goals, and success metrics from discovery data.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 1.
|
|
6
6
|
NOT for: direct user invocation.
|
|
7
|
+
triggers:
|
|
8
|
+
- "define problem"
|
|
9
|
+
- "goals non-goals"
|
|
10
|
+
- "success metrics"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
---
|
|
@@ -25,6 +29,18 @@ This phase answers: "Why are we doing this?" and "How will we know we succeeded?
|
|
|
25
29
|
| 4 | NEVER introduce solutions in the problem statement |
|
|
26
30
|
| 5 | If discovery brief has low confidence areas, flag them — don't paper over |
|
|
27
31
|
|
|
32
|
+
## Red Flags
|
|
33
|
+
|
|
34
|
+
Stop and re-read this skill if you are thinking:
|
|
35
|
+
|
|
36
|
+
| Rationalization | Rebuttal |
|
|
37
|
+
|---|---|
|
|
38
|
+
| "'Improve onboarding' is a real goal — the metric can come later." | Iron Law 1: every goal carries a measurable success metric, here. Phase 5 checks each user story against a goal's metric; a goal without one passes every check by being uncheckable. |
|
|
39
|
+
| "The obvious fix is a dashboard, so the problem is 'users have no dashboard'." | Iron Law 4: no solutions in the problem statement. A problem phrased as a missing solution pre-decides the PRD, and the stack and architecture phases then optimise for the wrong thing with nothing to notice. |
|
|
40
|
+
| "Non-goals are filler — two obvious ones are enough." | Iron Law 2 sets a floor of three, and non-goals are the only part of this document that stops scope growth later. The useful ones are the plausible features you are deliberately not building, not the absurd ones. |
|
|
41
|
+
| "The discovery brief was thin on this area, but I can reason my way to the goal." | Iron Law 5: flag low-confidence areas. Reasoning over a gap produces a goal that reads as firm as the evidenced ones, and no later phase can tell them apart. |
|
|
42
|
+
| "This problem is really about the database schema, which is the true root cause." | Iron Law 3: problems are stated from the user's perspective. A technical root cause belongs in the architecture phase; stated here it becomes the thing success is measured against, instead of what the user experiences. |
|
|
43
|
+
|
|
28
44
|
---
|
|
29
45
|
|
|
30
46
|
## Input Contract
|
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Collects and structures initial project information from multiple sources.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 0.
|
|
6
6
|
NOT for: direct user invocation — always called through orchestrator.
|
|
7
|
+
triggers:
|
|
8
|
+
- "project discovery"
|
|
9
|
+
- "discover project"
|
|
10
|
+
- "initial analysis"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -27,6 +31,18 @@ depends on the quality of discovery.
|
|
|
27
31
|
| 4 | Web research MUST cite sources |
|
|
28
32
|
| 5 | Codebase analysis MUST reference actual file paths |
|
|
29
33
|
|
|
34
|
+
## Red Flags
|
|
35
|
+
|
|
36
|
+
Stop and re-read this skill if you are thinking:
|
|
37
|
+
|
|
38
|
+
| Rationalization | Rebuttal |
|
|
39
|
+
|---|---|
|
|
40
|
+
| "The domain is obvious from the request, so `D_domain` is safe to fill in." | Iron Law 1 and 2: an inference is an assumption and must be labelled one. `D_domain` is a decision every later phase treats as settled — an unlabelled guess here becomes a stack choice in Phase 2 nobody re-examines. |
|
|
41
|
+
| "One area has no data, but the rest is solid — I'll note the gap and return `DONE`." | Iron Law 3: a critical area with no data is `NEEDS_CONTEXT` with a concrete A/B/C/D question. A gap recorded as a note is read by the next phase as something already handled. |
|
|
42
|
+
| "I recognise this framework's layout, so I can describe the codebase without opening files." | Iron Law 5 requires actual file paths. A described layout that does not match the repository misdirects every phase that follows, and nothing downstream reads the code again to catch it. |
|
|
43
|
+
| "The best-practice claim is common knowledge, so a citation is ceremony." | Iron Law 4: web research cites sources. Uncited common knowledge is where a stale convention enters the brief and survives to the architecture document as a constraint. |
|
|
44
|
+
| "The user already explained this in the request — restating it in the brief is redundant." | The brief is the only artifact Phase 1 receives; the original request is not passed along. Anything left out of it is lost to the entire pipeline. |
|
|
45
|
+
|
|
30
46
|
---
|
|
31
47
|
|
|
32
48
|
## Input Contract
|
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Collects and structures initial project information from multiple sources.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 0.
|
|
6
6
|
NOT for: direct user invocation — always called through orchestrator.
|
|
7
|
+
triggers:
|
|
8
|
+
- "project discovery"
|
|
9
|
+
- "discover project"
|
|
10
|
+
- "initial analysis"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -27,6 +31,18 @@ depends on the quality of discovery.
|
|
|
27
31
|
| 4 | Web research MUST cite sources |
|
|
28
32
|
| 5 | Codebase analysis MUST reference actual file paths |
|
|
29
33
|
|
|
34
|
+
## Red Flags
|
|
35
|
+
|
|
36
|
+
Stop and re-read this skill if you are thinking:
|
|
37
|
+
|
|
38
|
+
| Rationalization | Rebuttal |
|
|
39
|
+
|---|---|
|
|
40
|
+
| "The domain is obvious from the request, so `D_domain` is safe to fill in." | Iron Law 1 and 2: an inference is an assumption and must be labelled one. `D_domain` is a decision every later phase treats as settled — an unlabelled guess here becomes a stack choice in Phase 2 nobody re-examines. |
|
|
41
|
+
| "One area has no data, but the rest is solid — I'll note the gap and return `DONE`." | Iron Law 3: a critical area with no data is `NEEDS_CONTEXT` with a concrete A/B/C/D question. A gap recorded as a note is read by the next phase as something already handled. |
|
|
42
|
+
| "I recognise this framework's layout, so I can describe the codebase without opening files." | Iron Law 5 requires actual file paths. A described layout that does not match the repository misdirects every phase that follows, and nothing downstream reads the code again to catch it. |
|
|
43
|
+
| "The best-practice claim is common knowledge, so a citation is ceremony." | Iron Law 4: web research cites sources. Uncited common knowledge is where a stale convention enters the brief and survives to the architecture document as a constraint. |
|
|
44
|
+
| "The user already explained this in the request — restating it in the brief is redundant." | The brief is the only artifact Phase 1 receives; the original request is not passed along. Anything left out of it is lost to the entire pipeline. |
|
|
45
|
+
|
|
30
46
|
---
|
|
31
47
|
|
|
32
48
|
## Input Contract
|
|
@@ -4,6 +4,10 @@ description: >
|
|
|
4
4
|
Collects and structures initial project information from multiple sources.
|
|
5
5
|
Use when: dispatched by gproject-orchestrator Phase 0.
|
|
6
6
|
NOT for: direct user invocation — always called through orchestrator.
|
|
7
|
+
triggers:
|
|
8
|
+
- "project discovery"
|
|
9
|
+
- "discover project"
|
|
10
|
+
- "initial analysis"
|
|
7
11
|
metadata:
|
|
8
12
|
version: 1.0.0
|
|
9
13
|
---
|
|
@@ -26,6 +30,18 @@ depends on the quality of discovery.
|
|
|
26
30
|
| 4 | Web research MUST cite sources |
|
|
27
31
|
| 5 | Codebase analysis MUST reference actual file paths |
|
|
28
32
|
|
|
33
|
+
## Red Flags
|
|
34
|
+
|
|
35
|
+
Stop and re-read this skill if you are thinking:
|
|
36
|
+
|
|
37
|
+
| Rationalization | Rebuttal |
|
|
38
|
+
|---|---|
|
|
39
|
+
| "The domain is obvious from the request, so `D_domain` is safe to fill in." | Iron Law 1 and 2: an inference is an assumption and must be labelled one. `D_domain` is a decision every later phase treats as settled — an unlabelled guess here becomes a stack choice in Phase 2 nobody re-examines. |
|
|
40
|
+
| "One area has no data, but the rest is solid — I'll note the gap and return `DONE`." | Iron Law 3: a critical area with no data is `NEEDS_CONTEXT` with a concrete A/B/C/D question. A gap recorded as a note is read by the next phase as something already handled. |
|
|
41
|
+
| "I recognise this framework's layout, so I can describe the codebase without opening files." | Iron Law 5 requires actual file paths. A described layout that does not match the repository misdirects every phase that follows, and nothing downstream reads the code again to catch it. |
|
|
42
|
+
| "The best-practice claim is common knowledge, so a citation is ceremony." | Iron Law 4: web research cites sources. Uncited common knowledge is where a stale convention enters the brief and survives to the architecture document as a constraint. |
|
|
43
|
+
| "The user already explained this in the request — restating it in the brief is redundant." | The brief is the only artifact Phase 1 receives; the original request is not passed along. Anything left out of it is lost to the entire pipeline. |
|
|
44
|
+
|
|
29
45
|
---
|
|
30
46
|
|
|
31
47
|
## Input Contract
|
|
@@ -5,6 +5,10 @@ description: >
|
|
|
5
5
|
architecture doc, and best practices. Does NOT invent new architectural decisions.
|
|
6
6
|
Use when: dispatched by gproject-orchestrator Phase 4.
|
|
7
7
|
NOT for: direct user invocation.
|
|
8
|
+
triggers:
|
|
9
|
+
- "write spec"
|
|
10
|
+
- "technical specification"
|
|
11
|
+
- "implementation plan"
|
|
8
12
|
metadata:
|
|
9
13
|
version: 1.0.0
|
|
10
14
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -5,6 +5,10 @@ description: >
|
|
|
5
5
|
architecture doc, and best practices. Does NOT invent new architectural decisions.
|
|
6
6
|
Use when: dispatched by gproject-orchestrator Phase 4.
|
|
7
7
|
NOT for: direct user invocation.
|
|
8
|
+
triggers:
|
|
9
|
+
- "write spec"
|
|
10
|
+
- "technical specification"
|
|
11
|
+
- "implementation plan"
|
|
8
12
|
metadata:
|
|
9
13
|
version: 1.0.0
|
|
10
14
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -5,6 +5,10 @@ description: >
|
|
|
5
5
|
architecture doc, and best practices. Does NOT invent new architectural decisions.
|
|
6
6
|
Use when: dispatched by gproject-orchestrator Phase 4.
|
|
7
7
|
NOT for: direct user invocation.
|
|
8
|
+
triggers:
|
|
9
|
+
- "write spec"
|
|
10
|
+
- "technical specification"
|
|
11
|
+
- "implementation plan"
|
|
8
12
|
metadata:
|
|
9
13
|
version: 1.0.0
|
|
10
14
|
---
|
|
@@ -5,6 +5,10 @@ description: >
|
|
|
5
5
|
technology stack with trade-off analysis.
|
|
6
6
|
Use when: dispatched by gproject-orchestrator Phase 2.
|
|
7
7
|
NOT for: direct user invocation.
|
|
8
|
+
triggers:
|
|
9
|
+
- "stack advice"
|
|
10
|
+
- "choose stack"
|
|
11
|
+
- "technology choice"
|
|
8
12
|
metadata:
|
|
9
13
|
version: 1.0.0
|
|
10
14
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -5,6 +5,10 @@ description: >
|
|
|
5
5
|
technology stack with trade-off analysis.
|
|
6
6
|
Use when: dispatched by gproject-orchestrator Phase 2.
|
|
7
7
|
NOT for: direct user invocation.
|
|
8
|
+
triggers:
|
|
9
|
+
- "stack advice"
|
|
10
|
+
- "choose stack"
|
|
11
|
+
- "technology choice"
|
|
8
12
|
metadata:
|
|
9
13
|
version: 1.0.0
|
|
10
14
|
compatible_harnesses: "cursor,codex,zed,opencode"
|
|
@@ -5,6 +5,10 @@ description: >
|
|
|
5
5
|
technology stack with trade-off analysis.
|
|
6
6
|
Use when: dispatched by gproject-orchestrator Phase 2.
|
|
7
7
|
NOT for: direct user invocation.
|
|
8
|
+
triggers:
|
|
9
|
+
- "stack advice"
|
|
10
|
+
- "choose stack"
|
|
11
|
+
- "technology choice"
|
|
8
12
|
metadata:
|
|
9
13
|
version: 1.0.0
|
|
10
14
|
---
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-entrypoint-distiller
|
|
3
|
-
description: Use when the user asks to split, decompose, distill, or refactor a large AGENTS.md or CLAUDE.md into Metaproject rules and project-specific skills while keeping root entrypoints compact.
|
|
3
|
+
description: "Use when the user asks to split, decompose, distill, or refactor a large AGENTS.md or CLAUDE.md into Metaproject rules and project-specific skills while keeping root entrypoints compact. NOT for: adding a newly learned convention or command to an existing CLAUDE.md (use claude-md-management)."
|
|
4
4
|
triggers:
|
|
5
|
-
- "distill
|
|
5
|
+
- "distill claude"
|
|
6
6
|
- "split CLAUDE.md"
|
|
7
|
+
- "разбери CLAUDE.md"
|
|
8
|
+
- "создай правила из CLAUDE.md"
|
|
9
|
+
- "entrypoint rules"
|
|
10
|
+
- "distill AGENTS.md"
|
|
7
11
|
- "разнеси CLAUDE.md по правилам"
|
|
8
12
|
metadata:
|
|
9
13
|
version: "1.0.0"
|
|
@@ -35,10 +39,33 @@ keryx rules distill
|
|
|
35
39
|
|
|
36
40
|
```bash
|
|
37
41
|
keryx rules sync
|
|
38
|
-
keryx flow check
|
|
42
|
+
keryx flow check
|
|
39
43
|
```
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
`flow check` takes no flow id: it validates every package under `.metaproject/flows/` — id uniqueness, `flow.json` against the published schema, the six required documents, and the acceptance-criteria checksum. With no flows it prints `All flows are consistent.` and exits 0, so it is safe to run either way.
|
|
46
|
+
|
|
47
|
+
## Red Flags
|
|
48
|
+
|
|
49
|
+
Stop and re-read this skill if you are thinking:
|
|
50
|
+
|
|
51
|
+
| Rationalization | Rebuttal |
|
|
52
|
+
|---|---|
|
|
53
|
+
| "`keryx rules distill` exited 0, so the split is correct." | Exit 0 says the command ran, not that it split well. It happily writes an empty rule, a rule titled after a heading it could not classify, and two rules holding the same paragraph. Open every file listed in step 3 before reporting anything. |
|
|
54
|
+
| "The root entrypoint is short now, so the job is done." | Shortness is a side effect, not the goal. A root that no longer points at `.metaproject/index.md`, or that lost an always-on instruction into a rule nothing loads, is a regression that looks like success on a line count. |
|
|
55
|
+
| "This section read like a project rule, so I moved it out of the root." | Global, personal and highest-priority always-on instructions stay in the root by design. If you had to guess which kind a section was, it belongs in the ambiguous list for a human — not silently in a rule file. |
|
|
56
|
+
| "The project has no flow, so I can skip verification." | `keryx flow check` is not conditional either — with no flows it reports `All flows are consistent.` and exits 0. `keryx rules sync` runs every time; skipping it ships a rules tree whose index and files disagree. |
|
|
57
|
+
| "`keryx rules distill` rewrote the root files, so I don't need to read them." | The rewrite is exactly what needs checking. Reading the post-distill `AGENTS.md` and `CLAUDE.md` is the only way to see what was carried out of them. |
|
|
58
|
+
|
|
59
|
+
## Verification
|
|
60
|
+
|
|
61
|
+
Before reporting, all of these must hold:
|
|
62
|
+
|
|
63
|
+
- `keryx rules sync` exits 0.
|
|
64
|
+
- `.metaproject/rules/entrypoints/index.md` exists and names every file written under `.metaproject/rules/entrypoints/`.
|
|
65
|
+
- Every generated rule and project-skill file is non-empty and was read, not just listed.
|
|
66
|
+
- `AGENTS.md` and `CLAUDE.md` both still reference `.metaproject/index.md`.
|
|
67
|
+
- `keryx flow check` exits 0. It takes no id and checks every flow package in the project, so a distill that corrupted one reports here even though the distill never touched flows.
|
|
68
|
+
- Every section you could not confidently classify appears in the ambiguous list of the Output Contract. An empty ambiguous list on a large entrypoint is a claim, and it must be a true one.
|
|
42
69
|
|
|
43
70
|
## Output Contract
|
|
44
71
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: claude-md-management
|
|
3
|
-
description: "Use when saving session learnings, coding patterns, conventions, or commands discovered during work into CLAUDE.md files."
|
|
3
|
+
description: "Use when saving session learnings, coding patterns, conventions, or commands discovered during work into CLAUDE.md files. NOT for: breaking an oversized entrypoint apart into Metaproject rules and skills (use agent-entrypoint-distiller)."
|
|
4
4
|
triggers:
|
|
5
|
-
- "
|
|
5
|
+
- "CLAUDE.md management"
|
|
6
|
+
- "agent entrypoint"
|
|
6
7
|
- "Update claude md"
|
|
7
8
|
- "Save learnings"
|
|
8
9
|
- "Update project instructions"
|
|
@@ -85,3 +86,26 @@ Present diff preview:
|
|
|
85
86
|
- NEVER add entries that duplicate what's already there
|
|
86
87
|
- Keep CLAUDE.md files under 100 lines
|
|
87
88
|
- Prefer project-level for project-specific things
|
|
89
|
+
|
|
90
|
+
## Red Flags
|
|
91
|
+
|
|
92
|
+
Stop and re-read this skill if you are thinking:
|
|
93
|
+
|
|
94
|
+
| Rationalization | Rebuttal |
|
|
95
|
+
|---|---|
|
|
96
|
+
| "I established this pattern earlier in the session, so it is a project convention." | One occurrence in one session is an anecdote. Write it only if you saw it hold more than once, or the user stated it as a rule. Everything else is noise that a future session will obey as if it were law. |
|
|
97
|
+
| "`--auto` was passed, so I can skip reading the current files." | `--auto` removes the approval step in Step 5, not Steps 2-3. Skipping the read is how the same bullet lands three times and the file stops being read by anyone. |
|
|
98
|
+
| "This entry is genuinely useful, so the project CLAUDE.md is the safe place for it." | A personal preference written into the project file is committed and imposed on every contributor. Classify against the Step 3 table first: global preferences go to `~/.claude/CLAUDE.md`, project-specific personal notes to the per-project user file. |
|
|
99
|
+
| "The file is already at the 100-line cap, so one more line is harmless." | The cap is a limit, not a starting point. Going over means condensing or removing something outdated — and the removal has to be shown and explained, never done quietly. |
|
|
100
|
+
| "The new entry contradicts an existing one, so the newer one obviously wins." | Maybe the old entry is still right and what you observed was a one-off. Surface the contradiction in the proposal and let the user decide which survives. |
|
|
101
|
+
|
|
102
|
+
## Verification
|
|
103
|
+
|
|
104
|
+
Before reporting, all of these must hold:
|
|
105
|
+
|
|
106
|
+
- Every target file was re-read after editing, not assumed from the diff.
|
|
107
|
+
- No bullet you added duplicates or contradicts an existing line, in that file or in a sibling CLAUDE.md.
|
|
108
|
+
- Each edited file is still under 100 lines, uses `##` section headers, and has no YAML frontmatter.
|
|
109
|
+
- Every insight landed in the file the Step 3 table names for its type — no project file carrying a personal preference.
|
|
110
|
+
- Unless `--auto` was passed, the user saw the proposed diff and approved it before any write.
|
|
111
|
+
- The report names each file changed, each entry added, and each entry removed with the reason it was removed.
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hookify
|
|
3
|
-
description: "Use when adding automated hook behavior to Claude Code or Cursor from a natural language description."
|
|
3
|
+
description: "Use when adding automated hook behavior to Claude Code or Cursor from a natural language description. NOT for: recording a convention or command as prose an agent reads (use claude-md-management)."
|
|
4
4
|
triggers:
|
|
5
|
-
- "
|
|
5
|
+
- "hookify"
|
|
6
|
+
- "hook guidance"
|
|
7
|
+
- "safe hooks"
|
|
6
8
|
- "Create hook"
|
|
7
9
|
- "Add hook"
|
|
8
10
|
- "Run lint after edit"
|
|
@@ -88,7 +90,7 @@ After confirmation, merge into settings.
|
|
|
88
90
|
|
|
89
91
|
- **Auto-lint**: PostToolUse(Edit) → `eslint --fix $FILE`
|
|
90
92
|
- **Auto-format**: PostToolUse(Write) → `prettier --write $FILE`
|
|
91
|
-
- **Type-check gate**: PreToolUse(Bash:git commit) → `
|
|
93
|
+
- **Type-check gate**: PreToolUse(Bash:git commit) → `keryx health run --changed --source typescript` (or the project's own configured type-check command when keryx health is not configured — never a hardcoded `npx tsc`)
|
|
92
94
|
- **Notify on done**: Stop → notification command
|
|
93
95
|
|
|
94
96
|
## Rules
|
|
@@ -98,3 +100,26 @@ After confirmation, merge into settings.
|
|
|
98
100
|
- Keep timeouts reasonable (10-60s)
|
|
99
101
|
- Warn if hook could slow down every tool call
|
|
100
102
|
- Test commands before adding as hooks
|
|
103
|
+
|
|
104
|
+
## Red Flags
|
|
105
|
+
|
|
106
|
+
Stop and re-read this skill if you are thinking:
|
|
107
|
+
|
|
108
|
+
| Rationalization | Rebuttal |
|
|
109
|
+
|---|---|
|
|
110
|
+
| "The JSON is valid, so the hook works." | Valid JSON says nothing about whether the binary is on PATH, the matcher spells the tool name the way the harness emits it, or the command exits non-zero on a clean run. Step 4 exists because a hook that fails silently is worse than no hook: it runs on every tool call and reports nothing. |
|
|
111
|
+
| "The user described what they want clearly, so I can skip the preview." | The preview is where a matcher mistake is caught — "after every edit" meaning `Edit` but not `Write`, or a `PreToolUse` hook that will block the tool instead of warning. Show the resolved event, matcher, command and timeout, and apply only after confirmation. |
|
|
112
|
+
| "There is already a hook on this event, so I'll replace it." | Overwriting is the one thing this skill forbids. Merge into the existing array, or ask which should win. A removed hook does not announce itself — the user finds out when the check it enforced stops running. |
|
|
113
|
+
| "It's only a lint run, so the timeout does not matter." | A `PostToolUse(Edit)` hook runs on every single edit. A 5-minute lint on a large repo turns every edit into a stall, and the user will disable hooks entirely rather than debug it. Keep it in the 10-60s band and say so when the command is likely to be slow. |
|
|
114
|
+
| "The command works in my shell, so it works as a hook." | Hooks run without the interactive shell's profile, aliases or cwd assumptions. Use an absolute or project-relative invocation, and test it the way the hook will run it. |
|
|
115
|
+
|
|
116
|
+
## Verification
|
|
117
|
+
|
|
118
|
+
Before reporting, all of these must hold:
|
|
119
|
+
|
|
120
|
+
- The command was run standalone (when safe to do so) and its exit code observed — not assumed.
|
|
121
|
+
- The event name and matcher were checked against the Hook Event Reference table, and the matcher matches the tool the user actually meant.
|
|
122
|
+
- Existing hooks on that event were read and preserved; the written config contains them plus the new one.
|
|
123
|
+
- The timeout is set explicitly and is within the 10-60s band, or the report explains why it is not.
|
|
124
|
+
- The user saw the preview block (event, matcher, command, timeout) and confirmed before the settings file was written.
|
|
125
|
+
- The report names the settings file that changed and the exact hook entry added; for `--remove`, it names the entry deleted.
|