@antoneeo/kb-agentic-skill 1.1.0 → 1.1.1
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/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kb-agentic-skill",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Knowledge-Base & Document-First protocol with risk triage, Vision governance, signal distillation and optional devPNT integration.",
|
|
5
5
|
"author": "Antonio Pinto (https://github.com/Antoneeo)"
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antoneeo/kb-agentic-skill",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Knowledge-Base & Document-First protocol for Claude Code, Gemini CLI, Google Antigravity and Codex with risk triage, Vision governance, signal distillation and optional devPNT integration.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
@@ -21,7 +21,7 @@ Support files in the skill directory:
|
|
|
21
21
|
- `review.md`: the review discipline — when a review is due, how to request one, how to receive findings, how to review.
|
|
22
22
|
- `dispatch.md`: opt-in subagent execution of an approved plan.
|
|
23
23
|
- `routing.md`: which lens owns this unit of work. Read ONLY when a sibling lens skill is installed alongside this one; a single-lens install never reads it.
|
|
24
|
-
- `scripts/sdlc_check.py` + `scripts/sdlc_core.py`: the mechanical validator for the docs root (`check`, `validate`, `index`, `stale`, `mark`, `gate`, `plan`, `orient`, `migrate`, and the knowledge overlay: `graph`, `corpus`, `claim-id`). Two files: the core is the family's shared spine; the entry point IS the knowledge overlay — the claim ledger and topic-graph checks live inside it, so the core alone runs none of them. Copy both, or neither.
|
|
24
|
+
- `scripts/sdlc_check.py` + `scripts/sdlc_core.py`: the mechanical validator for the docs root (`check`, `validate`, `index`, `stale`, `mark`, `gate`, `plan`, `orient`, `migrate`, and the knowledge overlay: `graph`, `corpus`, `claim-id`, `anchor`). Two files: the core is the family's shared spine; the entry point IS the knowledge overlay — the claim ledger and topic-graph checks live inside it, so the core alone runs none of them. Copy both, or neither.
|
|
25
25
|
- `ENFORCEMENT.md`: optional setup for CI and hooks.
|
|
26
26
|
|
|
27
27
|
Read these files only when needed. `SKILL.md` is the operating contract; the support files are progressive resources.
|
|
@@ -83,7 +83,7 @@ Triage decides IF documentation is due; this table decides WHICH document each e
|
|
|
83
83
|
| `strategic/architecture.md`, `strategic/existing_features.md` | Bootstrap; update at closure when the knowledge catalog actually changed. | 1 / 5 |
|
|
84
84
|
| `vision/project_vision.md`, `roadmap.md`, `principles.md` | Bootstrap as `Status: DRAFT`; promoted to APPROVED only by explicit user confirmation. | 1 / 2 |
|
|
85
85
|
| `topics/<slug>.md` | A placement verdict creates it (MISSING/INADEQUATE-child, `taxonomy.md`); reconciliation updates its claim rows. One node per topic — a similar-but-distinct concept is a sibling with `related:` + a written distinction, never a merge and never a duplicate. Merged/renamed nodes become tombstones (`status: SUPERSEDED` + `redirect_to:`), never deleted. | 4 |
|
|
86
|
-
| `corpus/given/*` + sidecar | A source arrives:
|
|
86
|
+
| `corpus/given/*` + sidecar | A source arrives: it becomes a content-addressed artifact with a sidecar carrying digest/date/`supersedes:`. A text source is copied verbatim. A non-text source yields its stored canonical extraction — copied **beside** the original when that is small enough to keep, or **instead of it** on a large binary corpus, where the original stays where it lives and is recorded as `original_path:`/`original_sha256:` (`distillation.md` §1, which owns this rule). Never edited after ingest — the digest check on whatever `given/` holds is what enforces it. | 4 |
|
|
87
87
|
| `corpus/notes/*` | Something is said (`origin: elicited`), synthesised (`derived_from:`), or ruled (`basis:`). A note with none of the three is refused by the validator. | 4 / 5 |
|
|
88
88
|
| `INDEX.md`, `reference/INDEX.md`, `topics/INDEX.md`, `corpus/INDEX.md` | Regenerated by `sdlc_check.py index` at closure — never by hand; `validate` fails on a hand-edited one. | 5 |
|
|
89
89
|
|
|
@@ -859,10 +859,27 @@ def kb_cmd_claim_id(args):
|
|
|
859
859
|
|
|
860
860
|
|
|
861
861
|
def kb_cmd_anchor(args):
|
|
862
|
-
"""Prose citation -> a verified span. The half `claim-id` never had.
|
|
862
|
+
"""Prose citation -> a verified span. The half `claim-id` never had.
|
|
863
|
+
|
|
864
|
+
The path may be given as it appears in a claim's `source` cell
|
|
865
|
+
(`corpus/given/x-ab12cd34.txt`): when it does not resolve from the current
|
|
866
|
+
directory it is retried under the docs root, so the command works from
|
|
867
|
+
anywhere in the project instead of only from inside `ai_docs/`. Reported
|
|
868
|
+
from the field as an asymmetry with `graph`/`corpus`/`check`, which take
|
|
869
|
+
`--root`; those scan a tree, this one takes a path, and the fix is to make
|
|
870
|
+
the path resolve rather than to document where to stand."""
|
|
863
871
|
p = Path(args.path)
|
|
864
872
|
if not p.is_file():
|
|
865
|
-
|
|
873
|
+
try:
|
|
874
|
+
_, docs = _kb_root(args)
|
|
875
|
+
if (docs / args.path).is_file():
|
|
876
|
+
p = docs / args.path
|
|
877
|
+
except sdlc_core.AmbiguousDocsRoot:
|
|
878
|
+
pass
|
|
879
|
+
if not p.is_file():
|
|
880
|
+
print("[ERROR] no such file: %s" % args.path)
|
|
881
|
+
print(" looked from the current directory and under the docs "
|
|
882
|
+
"root; give the path as the claim's `source` cell carries it.")
|
|
866
883
|
return 2
|
|
867
884
|
hits = kb_resolve_anchor(p, args.phrase, ignore_case=args.ignore_case,
|
|
868
885
|
page=args.page)
|
|
@@ -940,6 +957,8 @@ def main(argv=None):
|
|
|
940
957
|
p = sub.add_parser("anchor")
|
|
941
958
|
p.add_argument("path")
|
|
942
959
|
p.add_argument("phrase")
|
|
960
|
+
p.add_argument("--root")
|
|
961
|
+
p.add_argument("--docs-dir")
|
|
943
962
|
p.add_argument("--page", type=int)
|
|
944
963
|
p.add_argument("--ignore-case", action="store_true")
|
|
945
964
|
p.add_argument("--all", action="store_true")
|