@antoneeo/kb-agentic-skill 1.14.0 → 1.16.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.
- package/CHANGELOG.md +92 -0
- package/README.md +30 -1
- package/gemini-extension.json +6 -6
- package/package.json +51 -51
- package/skills/kb-agentic-skill/ENFORCEMENT.md +10 -1
- package/skills/kb-agentic-skill/SKILL.md +294 -274
- package/skills/kb-agentic-skill/dispatch.md +39 -1
- package/skills/kb-agentic-skill/distillation.md +38 -7
- package/skills/kb-agentic-skill/reconciliation.md +22 -0
- package/skills/kb-agentic-skill/review.md +80 -3
- package/skills/kb-agentic-skill/scripts/sdlc_check.py +33 -4
- package/skills/kb-agentic-skill/scripts/sdlc_core.py +239 -1
- package/skills/kb-agentic-skill/templates.md +17 -9
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,98 @@
|
|
|
2
2
|
|
|
3
3
|
Every significant change to this skill is recorded here.
|
|
4
4
|
|
|
5
|
+
## [1.16.0] - 2026-09-12
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **F-054: the recall verdict names every branch the descent opened.** The
|
|
9
|
+
descent is multi-branch by mandate (`taxonomy.md` §1: follow every parent,
|
|
10
|
+
open the final candidates), and the verdict vocabulary assumed exactly one
|
|
11
|
+
matched slug — so a mandated act had no legal way to declare its result, and
|
|
12
|
+
an agent facing two legitimate branches invented a shape for it. Both
|
|
13
|
+
node-naming verdicts now read `kb: <slug>[, <slug> …] → …`, naming every slug
|
|
14
|
+
opened and not only the one that answered, because which branches were read is
|
|
15
|
+
the part of the verdict a reader can check. **Four legal values, unchanged**:
|
|
16
|
+
the repair is the form, never a fifth value, and the count is pinned against
|
|
17
|
+
creep. Found by replaying the doctrine against a real question rather than by
|
|
18
|
+
reading it.
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- **The behavioural eval driver died on its own scenarios.** `run_behavioral.py`
|
|
22
|
+
read scenarios as UTF-8 and printed them to a console that, on Windows,
|
|
23
|
+
defaults to cp1252 — which has no mapping for `→`. The shipped scenario
|
|
24
|
+
`recall_descends_before_answering.md` has contained that character since 1.7.0,
|
|
25
|
+
so on a default Windows console that eval was un-runnable and the driver
|
|
26
|
+
exited before printing its own pass criteria. stdout is now reconfigured to
|
|
27
|
+
UTF-8 with `errors="replace"`: a console that cannot render a glyph is not a
|
|
28
|
+
reason to withhold the scenario.
|
|
29
|
+
|
|
30
|
+
### Not demonstrated
|
|
31
|
+
- **The defect this release was opened to fix does not exist, as stated.** The
|
|
32
|
+
claim was that the recall's four verdicts all sit downstream of one instrument,
|
|
33
|
+
so a descent picking the wrong branch declares `kb: no coverage` on a corpus
|
|
34
|
+
that holds the answer — a false negative indistinguishable from real absence.
|
|
35
|
+
Two agent-level replays refuted it, including a fixture built to be hostile
|
|
36
|
+
(eight topics, the answering claim under `gdpr_compliance` while
|
|
37
|
+
`observability` was the more plausible branch): both returned the right claim,
|
|
38
|
+
and one ran a `grep` cross-check unprompted. A mandated text probe and a
|
|
39
|
+
generated claims inventory were therefore abandoned rather than shipped, and no
|
|
40
|
+
assertion pins them — a probe pinning what was decided against is red by
|
|
41
|
+
construction. Standing limit: two runs, one subject model, fixtures authored by
|
|
42
|
+
the session that made the claim. Record in
|
|
43
|
+
`ai_docs/solutions/SPIKE_kb_recall_second_instrument.md`.
|
|
44
|
+
|
|
45
|
+
## [1.15.0] - 2026-09-12
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
- **F-047: one row asserts one thing.** Field report: a bundled claim row
|
|
49
|
+
("X, and also Y") made the checker's remedies point in opposite directions —
|
|
50
|
+
the collision message told the author to merge rows that assert different
|
|
51
|
+
things, and the state-grammar message denied a multi-successor `SUPERSEDED`
|
|
52
|
+
that every documented site also denied. The collision message is now
|
|
53
|
+
narrow-first and proposes a merge only where a single assertion is shared;
|
|
54
|
+
the grammar message states the form it accepts; and a plurality hint
|
|
55
|
+
(notes tier, never the exit code) flags a row that reads as more than one
|
|
56
|
+
claim. NOT demonstrated: a pre-registered blind A/B of the citation-scope
|
|
57
|
+
rule on the field's own row returned NULL (3/3 correct in both arms —
|
|
58
|
+
ceiling effect, the row names its off-topic subject explicitly), and the
|
|
59
|
+
Diary records it as such.
|
|
60
|
+
- **F-053: kb had no human-approval rule.** "Never auto-accept a devPNT
|
|
61
|
+
proposal: present the preview and wait for explicit confirmation" existed in
|
|
62
|
+
both sibling packages and nowhere in this one — invisible because the only
|
|
63
|
+
battery assertion sat inside a test that skips every lens without a
|
|
64
|
+
`hybrid.md`, which is exactly the lens that lacked the rule. The rule is now
|
|
65
|
+
in kb's Hybrid block, and the battery test that pins it skips no lens and
|
|
66
|
+
goes red when the rule is stripped from a whole-lens copy.
|
|
67
|
+
- **F-053: the authoring-floor pointer reached one lens of three.** It is now
|
|
68
|
+
in this contract too, before the instruction to write the analysis — where
|
|
69
|
+
the rule can still change what gets written, rather than at the design-review
|
|
70
|
+
gate one phase too late.
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
- **The shared spine gains the capability floor, the delegation boundary and
|
|
74
|
+
`benefit`** (F-048, F-049, F-050 — see the code lens's changelog for the
|
|
75
|
+
reasoning; the files are byte-identical across the three packages).
|
|
76
|
+
|
|
77
|
+
### Read cost
|
|
78
|
+
- This lens's mandatory contract GREW **+7.1%** (27,516 -> 29,471 B): it
|
|
79
|
+
received the spine's new doctrine and the two rules above, and no diet. The
|
|
80
|
+
Hybrid seam was measured for extraction and DECLINED — kb's block is 299 B
|
|
81
|
+
against a 1,282 B pointer, so moving it would grow the file it should shrink.
|
|
82
|
+
|
|
83
|
+
## [1.14.1] - 2026-09-06
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
- **F-046 shipped a hook that wired nowhere.** `wireRemindHookInto` used the
|
|
87
|
+
ORIENT hook's opt-out marker (`orient-hook-wired`) as its own. That file is
|
|
88
|
+
present on every machine that ever installed the skill, so the installer read
|
|
89
|
+
it as "the user opted out of the per-turn reminder" and never wrote the hook —
|
|
90
|
+
for everyone. Two smaller faults in the same function: the marker was checked
|
|
91
|
+
BEFORE testing whether the hook was already present, and no marker was ever
|
|
92
|
+
written after a successful wire, so the real opt-out could never arm. The hook
|
|
93
|
+
now has its own `remind-hook-wired` marker, checked after the presence test and
|
|
94
|
+
written only on success. Regression pinned in `scripts/test_clients.js` (red
|
|
95
|
+
against 1.32.0: an orient-marked machine got no hook).
|
|
96
|
+
|
|
5
97
|
## [1.14.0] - 2026-09-06
|
|
6
98
|
|
|
7
99
|
### Added
|
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ Deliberately absent: any per-node coverage or completion state. `gaps:` says wha
|
|
|
37
37
|
- **Independent review, twice**: the design before it is implemented, the result before it is declared done — fresh-context subagent > one-shot run > a declared self-pass, 3 rounds max, one log line each, and a PASS is invalid on "found nothing".
|
|
38
38
|
- **Question discipline**: a question is legal only when the agent searched first, names the search with its result, and names the decision it unblocks; otherwise it proceeds on a declared assumption, batched.
|
|
39
39
|
- **Operative guides + agent-global KB**: distil user-provided indications into source-faithful `GUIDE_*.md` (`source_kind: document`) — verbatim snapshot plus hash, so drift is detected mechanically.
|
|
40
|
-
- **Mechanical checks**: `check`, `validate`, `index`, `graph`, `corpus`, `claim-id`, `anchor`, `export`, `import`, `stale` (spine staleness plus `## claims` -- superseded-cited documents, expired `valid` windows, superseded derivation chains), plus the spine's `mark`/`gate`/`plan`/`orient`/`migrate`. The graph and corpus checks verify spans against the stored extraction, recompute every id, refuse cycles and unreachable nodes, and enforce `CONTESTED` symmetry.
|
|
40
|
+
- **Mechanical checks**: `check`, `validate`, `index`, `graph`, `corpus`, `claim-id`, `anchor`, `export`, `import`, `stale` (spine staleness plus `## claims` -- superseded-cited documents, expired `valid` windows, superseded derivation chains), plus the spine's `mark`/`benefit`/`gate`/`plan`/`orient`/`migrate`. `benefit` reports what the review gates have already caught, beside what the doctrine costs to read; it always exits 0 and carries no verdict. The graph and corpus checks verify spans against the stored extraction, recompute every id, refuse cycles and unreachable nodes, and enforce `CONTESTED` symmetry.
|
|
41
41
|
- **Installed support files**: Claude, Codex, Gemini and Google Antigravity receive the full skill folder — `SKILL.md`, `templates.md`, `taxonomy.md`, `distillation.md`, `reconciliation.md`, `guides.md`, `vision.md`, `elicitation.md`, `review.md`, `dispatch.md`, `routing.md`, `ENFORCEMENT.md`, and the validator's two files, `scripts/sdlc_check.py` + `scripts/sdlc_core.py` (the core is the family's shared spine — copy both, or neither).
|
|
42
42
|
|
|
43
43
|
## Installation
|
|
@@ -115,3 +115,32 @@ Triage, the Vision Gate, the review gates, the guide router, question discipline
|
|
|
115
115
|
Created by **Antonio Pinto** ([GitHub](https://github.com/Antoneeo)).
|
|
116
116
|
|
|
117
117
|
MIT (c) 2026 Antonio Pinto.
|
|
118
|
+
|
|
119
|
+
## Which model to run it on
|
|
120
|
+
|
|
121
|
+
The skill names **capability tiers**, never providers — a model name in doctrine
|
|
122
|
+
rots at the next release. The binding is yours to make, and the rule is one line:
|
|
123
|
+
|
|
124
|
+
> **A session's floor is the highest floor among the roles it performs itself.**
|
|
125
|
+
|
|
126
|
+
Authoring a governed artifact — the vision, the analysis, the use cases, the
|
|
127
|
+
threat model — is a **deep-tier** role: its output is judgement, and nothing
|
|
128
|
+
downstream scores it. So a session that will DESIGN wants your strongest model.
|
|
129
|
+
A session that only executes an already-approved plan, or does small maintenance,
|
|
130
|
+
can sit a tier lower. The cheapest tier is the wrong choice for the main session
|
|
131
|
+
whatever the task, because the failure there is not a wrong answer — it is
|
|
132
|
+
**silently not applying the process**: a triage never run, a router verdict
|
|
133
|
+
declared without the lookup, a gate nobody noticed. That failure is invisible to
|
|
134
|
+
every check in here.
|
|
135
|
+
|
|
136
|
+
**The reviewer's tier is not automatically yours.** On some clients a subagent
|
|
137
|
+
inherits the session's model; on others it takes one from its own definition, so
|
|
138
|
+
a strong session can be reviewed by a weak one — and a weak session can buy a
|
|
139
|
+
strong review. Set it deliberately; the
|
|
140
|
+
`model` column in the review log is where the choice becomes visible.
|
|
141
|
+
|
|
142
|
+
**Avoid one combination**: authoring below the floor AND reviewing below the floor
|
|
143
|
+
on the same unit. One disclosed weakness is a disclosed weakness; two is an
|
|
144
|
+
artifact nobody competent ever read. Where your client offers nothing better, the
|
|
145
|
+
review still runs and both facts are recorded — a disclosed worst case beats
|
|
146
|
+
skipping the review.
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "kb-agentic-skill",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Knowledge-Base & Document-First protocol with risk triage, Vision governance, signal distillation and optional devPNT integration.",
|
|
5
|
-
"author": "Antonio Pinto (https://github.com/Antoneeo)"
|
|
6
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "kb-agentic-skill",
|
|
3
|
+
"version": "1.16.0",
|
|
4
|
+
"description": "Knowledge-Base & Document-First protocol with risk triage, Vision governance, signal distillation and optional devPNT integration.",
|
|
5
|
+
"author": "Antonio Pinto (https://github.com/Antoneeo)"
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@antoneeo/kb-agentic-skill",
|
|
3
|
-
"version": "1.
|
|
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
|
-
"keywords": [
|
|
6
|
-
"claude-code",
|
|
7
|
-
"claude-skill",
|
|
8
|
-
"gemini-cli",
|
|
9
|
-
"skill",
|
|
10
|
-
"knowledge-base",
|
|
11
|
-
"documentation",
|
|
12
|
-
"ai-agent"
|
|
13
|
-
],
|
|
14
|
-
"author": "Antonio Pinto (https://github.com/Antoneeo)",
|
|
15
|
-
"license": "MIT",
|
|
16
|
-
"publishConfig": {
|
|
17
|
-
"access": "public"
|
|
18
|
-
},
|
|
19
|
-
"bin": {
|
|
20
|
-
"kb-agentic-init": "scripts/init.js",
|
|
21
|
-
"kb-agentic-install-skill": "scripts/postinstall.js"
|
|
22
|
-
},
|
|
23
|
-
"scripts": {
|
|
24
|
-
"postinstall": "node scripts/postinstall.js",
|
|
25
|
-
"preuninstall": "node scripts/preuninstall.js"
|
|
26
|
-
},
|
|
27
|
-
"files": [
|
|
28
|
-
"skills/kb-agentic-skill/SKILL.md",
|
|
29
|
-
"skills/kb-agentic-skill/templates.md",
|
|
30
|
-
"skills/kb-agentic-skill/taxonomy.md",
|
|
31
|
-
"skills/kb-agentic-skill/guides.md",
|
|
32
|
-
"skills/kb-agentic-skill/vision.md",
|
|
33
|
-
"skills/kb-agentic-skill/distillation.md",
|
|
34
|
-
"skills/kb-agentic-skill/reconciliation.md",
|
|
35
|
-
"skills/kb-agentic-skill/elicitation.md",
|
|
36
|
-
"skills/kb-agentic-skill/review.md",
|
|
37
|
-
"skills/kb-agentic-skill/dispatch.md",
|
|
38
|
-
"skills/kb-agentic-skill/routing.md",
|
|
39
|
-
"skills/kb-agentic-skill/portability.md",
|
|
40
|
-
"skills/kb-agentic-skill/ENFORCEMENT.md",
|
|
41
|
-
"skills/kb-agentic-skill/scripts/sdlc_check.py",
|
|
42
|
-
"skills/kb-agentic-skill/scripts/sdlc_core.py",
|
|
43
|
-
"gemini-extension.json",
|
|
44
|
-
"README.md",
|
|
45
|
-
"CHANGELOG.md",
|
|
46
|
-
"scripts/lib.js",
|
|
47
|
-
"scripts/init.js",
|
|
48
|
-
"scripts/postinstall.js",
|
|
49
|
-
"scripts/preuninstall.js"
|
|
50
|
-
]
|
|
51
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@antoneeo/kb-agentic-skill",
|
|
3
|
+
"version": "1.16.0",
|
|
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
|
+
"keywords": [
|
|
6
|
+
"claude-code",
|
|
7
|
+
"claude-skill",
|
|
8
|
+
"gemini-cli",
|
|
9
|
+
"skill",
|
|
10
|
+
"knowledge-base",
|
|
11
|
+
"documentation",
|
|
12
|
+
"ai-agent"
|
|
13
|
+
],
|
|
14
|
+
"author": "Antonio Pinto (https://github.com/Antoneeo)",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"bin": {
|
|
20
|
+
"kb-agentic-init": "scripts/init.js",
|
|
21
|
+
"kb-agentic-install-skill": "scripts/postinstall.js"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"postinstall": "node scripts/postinstall.js",
|
|
25
|
+
"preuninstall": "node scripts/preuninstall.js"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"skills/kb-agentic-skill/SKILL.md",
|
|
29
|
+
"skills/kb-agentic-skill/templates.md",
|
|
30
|
+
"skills/kb-agentic-skill/taxonomy.md",
|
|
31
|
+
"skills/kb-agentic-skill/guides.md",
|
|
32
|
+
"skills/kb-agentic-skill/vision.md",
|
|
33
|
+
"skills/kb-agentic-skill/distillation.md",
|
|
34
|
+
"skills/kb-agentic-skill/reconciliation.md",
|
|
35
|
+
"skills/kb-agentic-skill/elicitation.md",
|
|
36
|
+
"skills/kb-agentic-skill/review.md",
|
|
37
|
+
"skills/kb-agentic-skill/dispatch.md",
|
|
38
|
+
"skills/kb-agentic-skill/routing.md",
|
|
39
|
+
"skills/kb-agentic-skill/portability.md",
|
|
40
|
+
"skills/kb-agentic-skill/ENFORCEMENT.md",
|
|
41
|
+
"skills/kb-agentic-skill/scripts/sdlc_check.py",
|
|
42
|
+
"skills/kb-agentic-skill/scripts/sdlc_core.py",
|
|
43
|
+
"gemini-extension.json",
|
|
44
|
+
"README.md",
|
|
45
|
+
"CHANGELOG.md",
|
|
46
|
+
"scripts/lib.js",
|
|
47
|
+
"scripts/init.js",
|
|
48
|
+
"scripts/postinstall.js",
|
|
49
|
+
"scripts/preuninstall.js"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -102,7 +102,7 @@ Semantics: exit code 2 + message on stderr ⇒ the write is blocked and the mess
|
|
|
102
102
|
- The paths in `--protected` are prefixes relative to the project root, separated by `;`.
|
|
103
103
|
- `ai_docs/`, `tests/` and `test/` are always excluded from blocking.
|
|
104
104
|
- The hook assumes the working directory is the project root (standard behavior of Claude Code hooks).
|
|
105
|
-
- **Hybrid/devPNT projects**: add `--hybrid` to the gate command. Governed designs live in the devPNT DB, so the gate also unlocks when an approved E-TDD shadow (`ai_docs/solutions/SHADOW_*tdd*.md`, exported before implementation —
|
|
105
|
+
- **Hybrid/devPNT projects**: add `--hybrid` to the gate command. Governed designs live in the devPNT DB, so the gate also unlocks when an approved E-TDD shadow (`ai_docs/solutions/SHADOW_*tdd*.md`, exported before implementation — in this package that clause is the whole statement of the duty; the sibling lenses keep it in their `hybrid.md`, which kb does not have) is present. Without the flag the gate would block legitimate governed work. The flag is deliberately explicit: never auto-detected.
|
|
106
106
|
|
|
107
107
|
## 4. SessionStart hook (orientation, recommended default)
|
|
108
108
|
|
|
@@ -261,3 +261,12 @@ It aggregates the three test files (`test_plan.py` + `test_session_start.py` + `
|
|
|
261
261
|
**Optional CI** (same shape as §2, not mandatory): add a `run:` step invoking the `unittest discover` command above.
|
|
262
262
|
|
|
263
263
|
**T10 note:** if you copied `sdlc_check.py` and the `test_*.py` battery into the repo for CI, that copy is authoritative — keep it current when you update the skill.
|
|
264
|
+
|
|
265
|
+
## `benefit` is a report, never a CI gate
|
|
266
|
+
|
|
267
|
+
`sdlc_check.py benefit` reports what the review gates caught and what the
|
|
268
|
+
doctrine costs to read. It always exits 0 and emits no warning: **never wire
|
|
269
|
+
it into CI**. It is the criterion by which future units are judged, and a
|
|
270
|
+
measurement that can fail a build becomes a target -- a targeted measurement
|
|
271
|
+
stops measuring. Run it when deciding whether a proposed rule is worth its
|
|
272
|
+
ceremony, not on every push.
|