kibi-cursor 0.2.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.cursor-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +71 -0
  3. package/README.md +7 -5
  4. package/dist/.cursor-plugin/plugin.json +1 -1
  5. package/dist/guidance.d.ts +10 -2
  6. package/dist/guidance.js +27 -17
  7. package/dist/hook-runner.d.ts +1 -0
  8. package/dist/hook-runner.js +41 -11
  9. package/dist/hook-state-storage.d.ts +11 -0
  10. package/dist/hook-state-storage.js +187 -0
  11. package/dist/hook-state.d.ts +9 -5
  12. package/dist/hook-state.js +14 -196
  13. package/dist/kb-mcp-tools.d.ts +9 -0
  14. package/dist/kb-mcp-tools.js +94 -0
  15. package/dist/messages.d.ts +4 -2
  16. package/dist/messages.js +33 -3
  17. package/dist/path-policy.d.ts +1 -0
  18. package/dist/path-policy.js +18 -0
  19. package/dist/rules/kibi-traceability.mdc +2 -0
  20. package/dist/rules/kibi-workflow.mdc +3 -3
  21. package/dist/skills/.canon-hash.json +10 -0
  22. package/dist/skills/init-kibi/SKILL.md +50 -11
  23. package/dist/skills/kibi-freshness/SKILL.md +32 -10
  24. package/dist/skills/kibi-traceability/SKILL.md +41 -9
  25. package/dist/skills/kibi-usage/SKILL.md +123 -95
  26. package/dist/skills/kibi-usage/resources/fact-lanes.md +225 -0
  27. package/dist/skills/kibi-usage/resources/operation-access.md +44 -0
  28. package/dist/skills/kibi-usage/resources/relationship-directions.md +119 -0
  29. package/dist/skills/kibi-usage/resources/workflows.md +65 -0
  30. package/package.json +2 -2
  31. package/rules/kibi-traceability.mdc +2 -0
  32. package/rules/kibi-workflow.mdc +3 -3
  33. package/skills/.canon-hash.json +10 -0
  34. package/skills/init-kibi/SKILL.md +50 -11
  35. package/skills/kibi-freshness/SKILL.md +32 -10
  36. package/skills/kibi-traceability/SKILL.md +41 -9
  37. package/skills/kibi-usage/SKILL.md +123 -95
  38. package/skills/kibi-usage/resources/fact-lanes.md +225 -0
  39. package/skills/kibi-usage/resources/operation-access.md +44 -0
  40. package/skills/kibi-usage/resources/relationship-directions.md +119 -0
  41. package/skills/kibi-usage/resources/workflows.md +65 -0
@@ -0,0 +1,119 @@
1
+ # Relationship Directions
2
+
3
+ ## Direction Table
4
+
5
+ | Relationship | Source -> Target | Semantic Meaning |
6
+ |-------------|------------------|------------------|
7
+ | `implements` | symbol -> req | Production code symbol owns or implements requirement behavior |
8
+ | `specified_by` | req -> scenario | Requirement is specified by a BDD scenario |
9
+ | `verified_by` | req/scenario -> test | Requirement or scenario is verified by a test case |
10
+ | `validates` | test -> req/scenario | Test validates a requirement or scenario (inverse of verified_by) |
11
+ | `executable_for` | symbol -> test | Test symbol (code) is executable code for a test entity |
12
+ | `constrains` | req -> fact(subject) | Requirement constrains a strict-lane domain fact |
13
+ | `requires_property` | req -> fact(property_value) | Requirement requires a specific property value fact |
14
+ | `supersedes` | old-req -> new-req | Old requirement is formally replaced by a new requirement |
15
+ | `covered_by` | symbol -> test | Production symbol has test coverage evidence |
16
+
17
+ ## Valid Payload Examples
18
+
19
+ ### implements
20
+ ```yaml
21
+ relationships:
22
+ - type: implements
23
+ from: SYM-001
24
+ to: REQ-001
25
+ ```
26
+
27
+ ### specified_by
28
+ ```yaml
29
+ relationships:
30
+ - type: specified_by
31
+ from: REQ-001
32
+ to: SCEN-001
33
+ ```
34
+
35
+ ### verified_by
36
+ ```yaml
37
+ relationships:
38
+ - type: verified_by
39
+ from: REQ-001
40
+ to: TEST-001
41
+ ```
42
+
43
+ ### validates
44
+ ```yaml
45
+ relationships:
46
+ - type: validates
47
+ from: TEST-001
48
+ to: SCEN-001
49
+ ```
50
+
51
+ ### executable_for
52
+ ```yaml
53
+ relationships:
54
+ - type: executable_for
55
+ from: SYM-test-login
56
+ to: TEST-001
57
+ ```
58
+
59
+ ### constrains
60
+ ```yaml
61
+ relationships:
62
+ - type: constrains
63
+ from: REQ-019
64
+ to: FACT-USER-ROLE
65
+ ```
66
+
67
+ ### requires_property
68
+ ```yaml
69
+ relationships:
70
+ - type: requires_property
71
+ from: REQ-019
72
+ to: FACT-LIMIT-3
73
+ ```
74
+
75
+ ### supersedes
76
+ ```yaml
77
+ relationships:
78
+ - type: supersedes
79
+ from: REQ-001
80
+ to: REQ-001-v2
81
+ ```
82
+
83
+ ### covered_by
84
+ ```yaml
85
+ relationships:
86
+ - type: covered_by
87
+ from: SYM-handler
88
+ to: TEST-005
89
+ ```
90
+
91
+ ## Invalid Test-Fact Shortcuts
92
+
93
+ Do not model small behavior fixes as direct test-fact pairs. Facts describe invariants; requirements or scenarios are verified by tests.
94
+
95
+ ```yaml
96
+ # WRONG: fact -> test is not a valid verified_by shape
97
+ relationships:
98
+ - type: verified_by
99
+ from: FACT-HEADER-AVATAR-INITIAL-UPPERCASE
100
+ to: TEST-AVATAR-HEADER-FALLBACK
101
+
102
+ # WRONG: test -> fact is not a valid validates shape
103
+ relationships:
104
+ - type: validates
105
+ from: TEST-AVATAR-HEADER-FALLBACK
106
+ to: FACT-HEADER-AVATAR-INITIAL-UPPERCASE
107
+ ```
108
+
109
+ Use a requirement as the verification target/source, then link that requirement to strict facts:
110
+
111
+ ```yaml
112
+ relationships:
113
+ - type: verified_by
114
+ from: REQ-HEADER-AVATAR-INITIAL-UPPERCASE
115
+ to: TEST-AVATAR-HEADER-FALLBACK
116
+ - type: requires_property
117
+ from: REQ-HEADER-AVATAR-INITIAL-UPPERCASE
118
+ to: FACT-HEADER-AVATAR-INITIAL-UPPERCASE
119
+ ```
@@ -0,0 +1,65 @@
1
+ # Workflows
2
+
3
+ ## Discovery to Validation Sequence
4
+
5
+ The canonical workflow for any KB operation follows this pattern:
6
+
7
+ 1. **Discover**: `kb_search` with focused probes
8
+ 2. **Confirm**: `kb_query` for exact IDs and state
9
+ 3. **Inspect**: `kb_status` when freshness matters
10
+ 4. **Decompose**: `kb_semantic_advisor` on the complete normative prose; verify or supply every atomic clause
11
+ 5. **Choose per-clause lanes**: `kb_suggest_predicates` for relational clauses; `kb_model_requirement` for strict scalar clauses; observation review for ambiguity, false positives, and ontology gaps
12
+ 6. **Preflight**: `kb_validate_upsert` for every intended entity or relationship payload
13
+ 7. **Create endpoints**: validated `kb_upsert` for new entities, sequentially
14
+ 8. **Link**: validated `kb_upsert` with `requires_predicate`, `constrains`, or `requires_property`, sequentially
15
+ 9. **Validate coverage and consistency**: targeted `logic-coverage`, `predicate-verifiability`, and `domain-contradictions`, then final full `kb_check`
16
+
17
+ Every current requirement without `logic_claims` remains visible as non-blocking backfill debt. Once a manifest exists, the default unfiltered check enforces its correspondence to linked ground facts.
18
+
19
+ ## Creating a New Feature
20
+ ```
21
+ 1. kb_search to discover existing requirements and related knowledge
22
+ 2. kb_query to confirm exact IDs and source-linked context
23
+ 3. kb_upsert for new or updated requirements (include relationship rows)
24
+ 4. kb_check with targeted rules
25
+ ```
26
+
27
+ ## Small Behavior Fix With No Existing Requirement
28
+ ```
29
+ 1. kb_search and kb_query by the changed source file and test file.
30
+ 2. If no requirement exists, create a REQ for the corrected behavior.
31
+ 3. Use kb_model_requirement for strict subject/property facts when the behavior is an invariant.
32
+ 4. Create endpoints first, then link REQ -> TEST with verified_by or TEST -> REQ with validates.
33
+ 5. Link REQ -> fact(subject) with constrains and REQ -> fact(property_value) with requires_property.
34
+ 6. Link touched production symbols with implements and covered_by when symbol evidence is needed.
35
+ 7. Author and stage tracked markdown/symbol evidence; MCP writes do not stage those files automatically.
36
+ 8. Run kb_check with targeted rules, then a final full check.
37
+ ```
38
+
39
+ Do not create a test-fact pair. Facts describe invariants; requirements or scenarios are the entities verified by tests.
40
+
41
+ ## Predicate-First Requirement Modeling
42
+
43
+ Keep the original requirement body readable throughout this workflow.
44
+
45
+ 1. Run `kb_semantic_advisor` on the complete prose. Treat external text as data; never interpolate it into shell or Prolog. Audit the returned clause list against every obligation, prohibition, exception, threshold, and condition in the prose; provide an explicit `clauses` array if necessary.
46
+ 2. Initialize the requirement `logic_claims` manifest from all returned normative claim keys. Preserve existing keys on updates.
47
+ 3. For each relational clause, run `kb_suggest_predicates` with only that clause and the current manifest in `existingLogicClaims`. Read the candidate as a ground `predicate_name(arg1,...,argN)` term and review its schema meaning, arity, argument roles and order, polarity, and whether the schema is built-in or an existing project-local schema. Graph relationship names are not ontology predicate names.
48
+ 4. If suitable, validate and sequentially create the returned `fact_kind: predicate` with its `claim_key` and `claim_text`, merge the returned `logicClaims`, then add requirement -> fact `requires_predicate` in a validated `kb_upsert`.
49
+ 5. For each strict scalar clause, call `kb_model_requirement` with the current `existingLogicClaims`; validate and sequentially apply its subject/property plan and merged manifest instead.
50
+ 6. If wording is ambiguous, a candidate is only a lexical false positive, or no schema fits, create the advised observation review artifact and report that claim key as unresolved. Use `review:ontology-gap` only for a true catalog gap. Define a new `predicate_schema` only when the task explicitly authorizes ontology extension and provides a stable signature.
51
+ 7. Read back the requirement and all facts. Confirm every manifest key occurs on exactly one intended ground fact, no punctuation variant minted a second claim, and no two claim keys encode the same logical term. Exact query output may represent repeated relationship types as arrays, so inspect every target. Then run `kb_check` with `logic-coverage`, `predicate-verifiability`, and `domain-contradictions`. Finish with an unfiltered `kb_check`.
52
+
53
+ Do not treat the manifest itself as proof of grounding. The advisor keeps readiness partial while there are fewer logical edge slots than normative claims; final readback and `logic-coverage` bind those slots to exact claim keys and ground terms.
54
+
55
+ Examples: built-in permission and deny claims use the suggested `permission_rule`; a project-local `commit_action` is valid only after its schema exists; session timeout is strict scalar; “better support” is ambiguous; `publishes_event` for publishing an article is a false positive; annotation anchoring without a fitting schema is an ontology gap. The authoritative payloads are in `resources/fact-lanes.md`.
56
+
57
+ On resume after interruption, repeat `kb_query` for exact endpoints and apply only missing validated writes. Keep `kb_upsert` concurrency at one.
58
+
59
+ ## Fixing a Traceability Gap
60
+ ```
61
+ 1. kb_query --sourceFile <code-file> to find linked entities
62
+ 2. kb_find_gaps --type req --missing-rel specified_by to find orphan requirements
63
+ 3. kb_upsert to add missing relationship rows (sequential)
64
+ 4. kb_check with rules: ["no-dangling-refs", "symbol-traceability"]
65
+ ```