@antoneeo/kb-agentic-skill 1.17.0 → 1.18.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 +21 -0
- package/README.md +176 -160
- package/gemini-extension.json +1 -1
- package/package.json +4 -2
- package/scripts/init.js +6 -17
- package/skills/kb-agentic-skill/ENFORCEMENT.md +3 -3
- package/skills/kb-agentic-skill/SKILL.md +11 -3
- package/skills/kb-agentic-skill/memory.md +88 -0
- package/skills/kb-agentic-skill/routing.md +7 -1
- package/skills/kb-agentic-skill/scripts/knowledge.py +2089 -0
- package/skills/kb-agentic-skill/scripts/sdlc_check.py +62 -2044
- package/skills/kb-agentic-skill/scripts/sdlc_core.py +76 -5
- package/skills/kb-agentic-skill/templates.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
Every significant change to this skill is recorded here.
|
|
4
4
|
|
|
5
|
+
## [1.18.0] - 2026-09-19
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- F-057: shared project memory in every lens, no sibling installation required.
|
|
9
|
+
`index` catalogs original documents; `recall QUERY` searches live metadata.
|
|
10
|
+
KB integrity is shared; domain ownership and marketing numerical checks remain.
|
|
11
|
+
Vendored validators now require entry point + sdlc_core.py + knowledge.py.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **F-056: `stale` no longer reports an area fresh when it cannot evaluate it.** An
|
|
16
|
+
`audit_plan.md` row whose reference no longer resolves (the commit was amended,
|
|
17
|
+
rebased or squash-merged away, or the clone is shallow), whose reference is a git
|
|
18
|
+
hash where git is unusable, or whose reference is unparseable used to print a
|
|
19
|
+
warning, then `[ok]`, and exit 0. It now prints `[stale]` with the re-mark command
|
|
20
|
+
and exits 1, so `check` is NOT CLEAN. A reference that still resolves but is no
|
|
21
|
+
longer an ancestor of HEAD gets a warning before it dangles, and `mark` says to
|
|
22
|
+
commit its result as a new commit. **Teams that squash- or rebase-merge:** a
|
|
23
|
+
reference recorded on a feature branch never reaches the integration branch, so
|
|
24
|
+
re-mark those areas after the merge.
|
|
25
|
+
|
|
5
26
|
## [1.17.0] - 2026-09-14
|
|
6
27
|
|
|
7
28
|
### Changed
|
package/README.md
CHANGED
|
@@ -1,160 +1,176 @@
|
|
|
1
|
-
# KB Agentic Skill for Claude Code, Gemini CLI, Google Antigravity & Codex
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
##
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
1
|
+
# KB Agentic Skill for Claude Code, Gemini CLI, Google Antigravity & Codex
|
|
2
|
+
|
|
3
|
+
## Shared project memory
|
|
4
|
+
|
|
5
|
+
All three lenses include project memory by default; install the lens you need,
|
|
6
|
+
not a second skill just for recall. `index` registers guides, decisions and plans
|
|
7
|
+
in the docs root's `memory/INDEX.md`, linking originals without copying them.
|
|
8
|
+
`recall "onboarding"` finds related metadata across domains; optional
|
|
9
|
+
`topics: [onboarding]` links documents by subject. Read the originals for authority,
|
|
10
|
+
status and evidence: discovery is not approval or proof of implementation.
|
|
11
|
+
|
|
12
|
+
Registration happens at `index`/documentation closure, not through a background
|
|
13
|
+
watcher. Existing projects acquire the catalog on their next `index`; `recall`
|
|
14
|
+
also sees live metadata. The KB lens remains the specialist for ingestion and
|
|
15
|
+
taxonomy. Marketing retains its numerical validators. See the skill's `memory.md`.
|
|
16
|
+
Vendoring requires all three files: the entry point, `sdlc_core.py`, `knowledge.py`.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
`kb-agentic` turns an AI agent into the keeper of a second brain built **on the documents you supply** — not on what the model remembers. It supports Claude Code, Codex, Gemini CLI, Google Antigravity 2.0, Cursor/Windsurf-style project instructions, and optional devPNT governance.
|
|
20
|
+
|
|
21
|
+
The sibling of [`@antoneeo/agentic-sdlc-skill`](https://www.npmjs.com/package/@antoneeo/agentic-sdlc-skill), transplanted from source code to knowledge: same process, one different fidelity discipline.
|
|
22
|
+
|
|
23
|
+
## What it does
|
|
24
|
+
|
|
25
|
+
Two axes are kept apart on purpose — **abstraction** (a topic made of topics: the graph edges) and **certainty** (how strongly the corpus supports a statement: the claim rows).
|
|
26
|
+
|
|
27
|
+
1. **Intake — the source becomes untouchable.** Every document enters verbatim under `corpus/given/`, content-addressed by a raw-byte digest. A new version is appended with `supersedes:`, never overwritten. Non-text files get a **stored canonical extraction** (`.txt`, registered extractor) — those are the bytes locators point at, so an id stays valid across re-ingestion. On a large binary corpus the extraction **is** the artifact: the digest moves onto it (immutability still enforced, on the bytes that actually matter) and the original stays where it lives, recorded as `original_path:` + `original_sha256:`. 233 MB of manuals do not enter your repository to protect bytes no locator addresses — and the two recorded fields are honest about their limits, which differ: `original_sha256` checks nothing on its own (we do not hold the bytes), while `original_path` is verified to still resolve, and warns when it does not — a folder you reorganised should not leave sixteen sidecars pointing at nothing behind a green run. Spoken input is a note with `origin: elicited`; a synthesis carries `derived_from:`; your decision carries `basis:`. A note with none of the three is model knowledge dressed as a source, and the validator rejects it.
|
|
28
|
+
|
|
29
|
+
2. **Extraction — the unit is the claim.** Rows of `id | claim | valid | qty | about | source | prov | state`. The **id hashes the location and the quantity, never the text**, so an LLM rephrasing mints no new identity. The locator (`p=17@412-509`) is verified: the validator opens the extraction and checks the span exists — and `anchor <path> <phrase>` produces it for you, matching spaces as `\s+` because a PDF extraction breaks phrases mid-line. **Gates are extracted alongside powers**: for every row saying what something can do, the source is asked what must hold first — default-off, licence tier, version floor, dependency — because "yes, supported" without the gate is a plan that fails on site. The rule is *ask*, never *produce*: a source that states no gate yields no row. Validity scopes are half-open ("until March" and "from March" do not conflict). Quantities are typed — mixed kinds or currencies **refuse to sum**. What the source does not assert becomes a `gaps:` line, never a claim.
|
|
30
|
+
|
|
31
|
+
**The source is exhausted, not sampled.** "Invents nothing" is a floor, and an extractor that stops when nothing it wrote is false stops on page twenty of a two-hundred-page manual with every row correct — which is exactly what a 200-page manual produces in the field. So a long source is read in **bounded windows** (30 pages by default, one plan task each, the ledger holding your place across sessions), and every window closes by advancing `extracted_through:` on the artifact's sidecar. That field is what makes "I am finished" falsifiable: claims with no coverage recorded are an error, a claim addressing a page past the declared coverage is a contradiction, and coverage short of the end is reported until it reaches it. Its limit is stated where it is written — **nothing proves a page was read**; what changes is that the shortcut must now be written down to pass. And exhaustive means read, never *a row per page*: a page that asserts nothing yields nothing.
|
|
32
|
+
|
|
33
|
+
3. **Placement — five verdicts, after querying the graph.** Descent through the generated index following every parent (polyhierarchy). EXISTS → reconcile; INADEQUATE → child; **MISSING only after the graph was actually asked**; GENERALIZES → escalate (a new root stops at you); UNPLACED → quarantine. Similar-but-maybe-different becomes a sibling **with the distinguishing line written** — if you cannot write it, it is the same concept. Cycles are refused at write time; merged nodes leave a tombstone with `redirect_to:`, never a deletion.
|
|
34
|
+
|
|
35
|
+
4. **Reconciliation — the machine detects and holds, it never decides.** Five outcomes: new / confirmation (the source is appended to the row — the base strengthens, it does not lengthen) / refinement (the old row goes `SUPERSEDED`, its text intact) / coexistence (disjoint scopes) / conflict → the whole set goes `CONTESTED`, **symmetrically**: flipping one cell by hand fails the check. Only new information resolves it — a later source, or **your ruling with a `basis:`**, the fact you know and the corpus does not. No basis, no ruling: a preference is not a fact. A ruling is challengeable — a later document reopens the case with your basis beside it.
|
|
36
|
+
|
|
37
|
+
5. **Escalation in one batch at the end of the run**, in legal form (the claims, the reopenable sources, the dates, why the machine cannot decide). Ingestion never stops to interrogate you.
|
|
38
|
+
|
|
39
|
+
6. **Recall — the graph is read when answering, not only written when distilling.** Whenever a reply would assert facts about the project's domain, the agent scans the topic index and descends before answering from model memory — plausibility of coverage is judged ON the scanned index, never before it. Answers cite claim ids; a superseded claim is never cited without its successor; the verdict is declared only when the recall ran (`kb: <slug> → N claims cited`, a matched node with no claims surfaces its `gaps:`, and a missing index is reported as index-absent — not as a missing graph — with the regenerate command). When a DERIVED claim grounds a decision, its chain is walked to non-DERIVED ground (the given artifact or the elicited/ruled note) and that ground is cited — re-reading the agent's own synthesis is the echo chamber this rule exists to break. By construction, not exhortation: the kb `orient` opens every session with the topic router in sight.
|
|
40
|
+
|
|
41
|
+
7. **Capture — the day's decisions reach the ledger before they evaporate.** At a user-signed closing ("chiudiamo"), one sweep question — carrying its own inline result: "today I recorded X and Y — any other decisions from today?" — reaches even the decisions taken outside the session, which no transcript search could find. What surfaces lands on the existing rails (an elicited dated note, an L1 claim row) with explicit provenance; the sweep is idempotent (nothing captured twice), never creates topics, and stays silent when no one signed off. The kb `orient` shows notes recency at every session start — dated from note frontmatter, because file mtimes lie after a clone or worktree — so a missed capture is visible the next morning.
|
|
42
|
+
|
|
43
|
+
8. **Revision — documents read as current state.** Incorporating new knowledge into an existing document is a full re-read and a body rewrite, not a stack of dated deltas: anchored edits are each correct while the document as a whole rots. The doctrine keeps history in the Diary (past entries never rewritten), leaves claim tables to reconciliation and graph edges to the taxonomy, and runs per document even in a multi-document pass. Born from a real field post-mortem: twelve documents realigned by append, every untouched sentence left standing as printed truth.
|
|
44
|
+
|
|
45
|
+
Deliberately absent: any per-node coverage or completion state. `gaps:` says what a node lacks; nothing collects it into a dashboard. A **source** does record how far it has been read, but on its own sidecar and nowhere else — the corpus index prints that fact for every artifact, including the finished ones, because a list of only what is behind is the dashboard this method refuses.
|
|
46
|
+
|
|
47
|
+
## Key features
|
|
48
|
+
|
|
49
|
+
- **Risk-proportional triage, measured in knowledge and never in files**: one claim row → propagating a fact already settled → a new knowledge unit (a source ingested, a node created or superseded, the hierarchy moved). Carrying one settled fact into eight documents is small; one claim that re-parents a node is not. A **Write Triggers** table maps each knowledge event to exactly one destination.
|
|
50
|
+
- **Portable knowledge**: `export` bundles a subgraph together with the bytes its claims cite — a closure, not a selection, because a claim whose source cannot be reopened is model knowledge arriving by another route. `import` merges it into another project **additively**: it never overwrites a node and never deletes, and claims already present are recognised by id rather than by comparing text, since the same artifact cited at the same span mints the same id in every project. Knowledge crosses the project boundary; **authority does not** — an imported ruling arrives as `prov: IMPORTED`, keeps its original `basis:`, and cannot settle a local disagreement until you re-ratify it.
|
|
51
|
+
- **Several people, one project**: the workstream registry (`audit/handoff.md`) is **generated** from one file per open workstream, so two people opening or closing two workstreams on two branches edit two different files and their merge is clean. Row-per-workstream alone was not enough — a file-global `Date:` header defeats row-level ownership — so the header is derived from the sources and no writer touches it. The generated view can still conflict; that conflict is resolved by re-running `index`, never by hand, and `validate` refuses CLEAN until the file matches its sources. The append-only review log gets `merge=union` (a built-in driver, no per-clone configuration). It all works with no VCS at all: it is files and a generator.
|
|
52
|
+
- **Vision-guided governance**: Standalone projects use `ai_docs/vision/`; Hybrid projects use devPNT `M-VISION` as the milestone north star. `DRAFT` informs, `APPROVED` binds, promotion is the user's alone.
|
|
53
|
+
- **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".
|
|
54
|
+
- **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.
|
|
55
|
+
- **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.
|
|
56
|
+
- **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.
|
|
57
|
+
- **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`, `memory.md`, and the validator's three files, `scripts/sdlc_check.py` + `scripts/sdlc_core.py` + `scripts/knowledge.py` (copy all three) — plus the `LICENSE` and `NOTICE` it ships under.
|
|
58
|
+
|
|
59
|
+
## Installation
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npm install -g @antoneeo/kb-agentic-skill@latest
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
That is enough — the package's `postinstall` runs the installer. If your npm blocks
|
|
66
|
+
install scripts (`--ignore-scripts`, some CI/pnpm setups), run it by hand:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
kb-agentic-install-skill
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
> The command is on your PATH only after a **global** (`-g`) install; after a local
|
|
73
|
+
> `npm i`, invoke it as `npx kb-agentic-install-skill`.
|
|
74
|
+
|
|
75
|
+
The installer copies `skills/kb-agentic-skill/` recursively into native skill locations:
|
|
76
|
+
|
|
77
|
+
- Claude Code: `~/.claude/skills/kb-agentic/`
|
|
78
|
+
- Codex: `~/.codex/skills/kb-agentic/`
|
|
79
|
+
- Gemini CLI: `~/.gemini/skills/kb-agentic/`
|
|
80
|
+
- Google Antigravity: `~/.gemini/config/skills/kb-agentic/` (override the home with `ANTIGRAVITY_HOME`)
|
|
81
|
+
|
|
82
|
+
Restart the relevant agent, or reload skills where the CLI supports it.
|
|
83
|
+
|
|
84
|
+
Initialize a project:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
kb-agentic-init
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Run it inside a project to create `ai_docs/`, Vision documents, strategic docs, audit plan, and agent protocol files (`AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.cursorrules`).
|
|
91
|
+
|
|
92
|
+
Installing or updating the npm package **wires the session-orientation hook
|
|
93
|
+
machine-wide** (user-level `~/.claude/settings.json`, Claude Code with Python):
|
|
94
|
+
every project with a docs root greets its agent already oriented, and removing
|
|
95
|
+
the entry is a standing opt-out that no update ever overrides. `init` still
|
|
96
|
+
wires per-project where that is the better shape (a vendored validator, a
|
|
97
|
+
shared team file), so an agent opening
|
|
98
|
+
the project is handed the reading guide, the generated manifest, the guide router and the
|
|
99
|
+
last handoff before it does anything — instead of only when it remembers to look. That
|
|
100
|
+
wiring used to be a manual step documented in `ENFORCEMENT.md`; being manual, it was
|
|
101
|
+
skipped, and a project could run fully governed with an agent that never met the process.
|
|
102
|
+
|
|
103
|
+
The hook command names a validator, so where that validator lives decides which file gets
|
|
104
|
+
it: a repo that vendors it gets a repo-relative command in the shared `.claude/settings.json`
|
|
105
|
+
(portable — commit it); otherwise the path is machine-specific and goes to the git-ignored
|
|
106
|
+
`.claude/settings.local.json`, and each teammate runs `init` once. Re-running `init` never
|
|
107
|
+
duplicates the hook, and a hook whose validator no longer resolves is reported as **broken**
|
|
108
|
+
with the correction rather than counted as installed. `check` prints a one-line
|
|
109
|
+
note when a machine has no orientation hook at project or user level (or a dead
|
|
110
|
+
one), and an opt-in per-turn reminder exists for long sessions: `sdlc_check.py
|
|
111
|
+
remind`, one constant line via UserPromptSubmit -- documented in `ENFORCEMENT.md`
|
|
112
|
+
par.4, never wired by default.
|
|
113
|
+
|
|
114
|
+
## The family: three lenses, one spine
|
|
115
|
+
|
|
116
|
+
| Package | Faithful to | Unit of work |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| [`@antoneeo/agentic-sdlc-skill`](https://www.npmjs.com/package/@antoneeo/agentic-sdlc-skill) | this repository's code | feature |
|
|
119
|
+
| `@antoneeo/kb-agentic-skill` (this one) | the documents you supply | topic |
|
|
120
|
+
| [`@antoneeo/mkt-agentic-sdlc-skill`](https://www.npmjs.com/package/@antoneeo/mkt-agentic-sdlc-skill) | market evidence | engagement |
|
|
121
|
+
|
|
122
|
+
The three lenses ship the common validator core and knowledge-integrity engine. When two live in the same project, `routing.md` decides which lens owns a given piece of work. Each entry point composes its structural checks: marketing uses its own document validation and numerical checks; code/KB do not certify marketing arithmetic.
|
|
123
|
+
|
|
124
|
+
## Standalone vs Hybrid
|
|
125
|
+
|
|
126
|
+
- **Standalone** — `ai_docs/` is the source of truth: vision, topics, corpus, audit, handoff.
|
|
127
|
+
- **Hybrid with devPNT** — devPNT governs `M-VISION`, Master Plan, Action Plan and versioned artifacts; `ai_docs/` stays as readable context, fallback and shadow. Divergence between your request, the local Vision and the M-VISION is surfaced before any work.
|
|
128
|
+
|
|
129
|
+
## Created By
|
|
130
|
+
|
|
131
|
+
Created by **Antonio Pinto** ([GitHub](https://github.com/Antoneeo)).
|
|
132
|
+
|
|
133
|
+
## License
|
|
134
|
+
|
|
135
|
+
Apache-2.0 — the full terms are in the `LICENSE` file, the attribution in `NOTICE`. Copyright 2026 Antonio Pinto.
|
|
136
|
+
|
|
137
|
+
If you redistribute this skill, or a version you modified, keep `LICENSE` and `NOTICE` with it.
|
|
138
|
+
|
|
139
|
+
Using the skill in your own project carries no obligation: the documents it creates or templates there are yours, and so is a copy of the validator and its tests placed in that project to check its own documents.
|
|
140
|
+
|
|
141
|
+
Versions up to 1.16.0 were released under the MIT license and remain available under it.
|
|
142
|
+
|
|
143
|
+
If you use the skill in commercial work, a mention on your product page or website is appreciated. It is a request, not a condition of the license. A ready-made badge:
|
|
144
|
+
|
|
145
|
+
```markdown
|
|
146
|
+
[](https://www.npmjs.com/package/@antoneeo/kb-agentic-skill)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Which model to run it on
|
|
150
|
+
|
|
151
|
+
The skill names **capability tiers**, never providers — a model name in doctrine
|
|
152
|
+
rots at the next release. The binding is yours to make, and the rule is one line:
|
|
153
|
+
|
|
154
|
+
> **A session's floor is the highest floor among the roles it performs itself.**
|
|
155
|
+
|
|
156
|
+
Authoring a governed artifact — the vision, the analysis, the use cases, the
|
|
157
|
+
threat model — is a **deep-tier** role: its output is judgement, and nothing
|
|
158
|
+
downstream scores it. So a session that will DESIGN wants your strongest model.
|
|
159
|
+
A session that only executes an already-approved plan, or does small maintenance,
|
|
160
|
+
can sit a tier lower. The cheapest tier is the wrong choice for the main session
|
|
161
|
+
whatever the task, because the failure there is not a wrong answer — it is
|
|
162
|
+
**silently not applying the process**: a triage never run, a router verdict
|
|
163
|
+
declared without the lookup, a gate nobody noticed. That failure is invisible to
|
|
164
|
+
every check in here.
|
|
165
|
+
|
|
166
|
+
**The reviewer's tier is not automatically yours.** On some clients a subagent
|
|
167
|
+
inherits the session's model; on others it takes one from its own definition, so
|
|
168
|
+
a strong session can be reviewed by a weak one — and a weak session can buy a
|
|
169
|
+
strong review. Set it deliberately; the
|
|
170
|
+
`model` column in the review log is where the choice becomes visible.
|
|
171
|
+
|
|
172
|
+
**Avoid one combination**: authoring below the floor AND reviewing below the floor
|
|
173
|
+
on the same unit. One disclosed weakness is a disclosed weakness; two is an
|
|
174
|
+
artifact nobody competent ever read. Where your client offers nothing better, the
|
|
175
|
+
review still runs and both facts are recorded — a disclosed worst case beats
|
|
176
|
+
skipping the review.
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kb-agentic-skill",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
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.
|
|
3
|
+
"version": "1.18.0",
|
|
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",
|
|
@@ -39,7 +39,9 @@
|
|
|
39
39
|
"skills/kb-agentic-skill/portability.md",
|
|
40
40
|
"skills/kb-agentic-skill/ENFORCEMENT.md",
|
|
41
41
|
"skills/kb-agentic-skill/scripts/sdlc_check.py",
|
|
42
|
-
"skills/kb-agentic-skill/scripts/sdlc_core.py",
|
|
42
|
+
"skills/kb-agentic-skill/scripts/sdlc_core.py",
|
|
43
|
+
"skills/kb-agentic-skill/scripts/knowledge.py",
|
|
44
|
+
"skills/kb-agentic-skill/memory.md",
|
|
43
45
|
"skills/kb-agentic-skill/LICENSE",
|
|
44
46
|
"skills/kb-agentic-skill/NOTICE",
|
|
45
47
|
"gemini-extension.json",
|
package/scripts/init.js
CHANGED
|
@@ -196,27 +196,16 @@ in the skill's \`routing.md\`: it decides which lens's method and validation rul
|
|
|
196
196
|
that unit. L1 never reaches it. Never refer to a document whose meaning differs by lens
|
|
197
197
|
("threat model", "vision", \`principles.md\`, \`handoff.md\`) by its bare name.
|
|
198
198
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
## Rule Zero — Triage every request (knowledge lens)
|
|
205
|
-
- L1 Quick fact: a small update to an existing note, 1-2 files.
|
|
206
|
-
- L2 Local note / SOP update: at most 1-2 files, low risk, sources named.
|
|
207
|
-
- L3 Major knowledge unit: large document sets, multi-topic research, corpus
|
|
208
|
-
restructuring. Full workflow via the skill.
|
|
209
|
-
- Spike: time-boxed exploration; outcome in \`ai_docs/solutions/SPIKE_[topic].md\`.
|
|
210
|
-
` : `The always-on protocol pointer for the knowledge lens was created by this init. When you
|
|
211
|
-
install another lens over this project, its init will leave its own ladder here for you
|
|
212
|
-
to merge.
|
|
213
|
-
`}
|
|
199
|
+
Select the owning lens by the unit's purpose, then apply only its risk scale.
|
|
200
|
+
The project's always-on pointer stays intact: consult the selected skill rather than
|
|
201
|
+
merging multiple mandatory ladders. All lenses already carry shared project memory
|
|
202
|
+
(\`memory.md\`); another installation is not needed for cross-domain recall.
|
|
214
203
|
This file is NOT auto-loaded by any client: it is a note for you, deliberately additive.
|
|
215
|
-
Delete
|
|
204
|
+
Delete this note once the routing pointer is integrated.
|
|
216
205
|
`, 'multi-lens routing note');
|
|
217
206
|
if (wrote && protocolPreexisting) {
|
|
218
207
|
console.log(' ⚠️ A protocol pointer already existed and was NOT overwritten.');
|
|
219
|
-
console.log(
|
|
208
|
+
console.log(' Integrate the routing pointer from AGENTIC_MULTI_LENS.md; keep one risk scale per unit.');
|
|
220
209
|
}
|
|
221
210
|
}
|
|
222
211
|
|
|
@@ -52,13 +52,13 @@ and always fail-open. Event-driven by design: reconciliation §2 runs
|
|
|
52
52
|
|
|
53
53
|
## 2. Check in CI (recommended for teams)
|
|
54
54
|
|
|
55
|
-
Copy
|
|
55
|
+
Copy all three validator files into the repository: `scripts/sdlc_check.py`, `scripts/sdlc_core.py`, and `scripts/knowledge.py`, keeping them side by side. Then add to the pipeline:
|
|
56
56
|
|
|
57
57
|
```
|
|
58
58
|
python tools/sdlc_check.py validate --strict
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
The validator ships as
|
|
61
|
+
The validator ships as **three files**: the domain entry point, `sdlc_core.py` and `knowledge.py`. Keep all three together. The core alone still runs but omits shared-memory/KB checks and domain-specific overlays; it is not an equivalent CI gate. `check` includes the knowledge surface when present.
|
|
62
62
|
|
|
63
63
|
```
|
|
64
64
|
python tools/sdlc_check.py graph --root .
|
|
@@ -69,7 +69,7 @@ python tools/sdlc_check.py corpus --root .
|
|
|
69
69
|
|
|
70
70
|
Effect: an unregenerated index, invalid frontmatter, a missing security section or incoherent states **block the pipeline** instead of relying on the agent's memory. `--strict` also fails on warnings and on a missing `ai_docs/`, so a wrong working directory cannot produce a green pipeline. This works because documents travel in the same PR as the code (Phase 5 rule).
|
|
71
71
|
|
|
72
|
-
Note: the copy in the repo is the authoritative one for CI; update it when you update the skill —
|
|
72
|
+
Note: the copy in the repo is the authoritative one for CI; update it when you update the skill — all three files, together.
|
|
73
73
|
|
|
74
74
|
**Projects whose docs root is not `ai_docs/`.** Pass `--docs-dir <name>` (e.g. `--docs-dir mkt_docs`) on any subcommand, or set `AGENTIC_SDLC_DOCS_DIR`. Without either, the validator walks up from the working directory and takes the nearest root it recognizes. If it finds two side by side — the shape of a half-finished migration — it refuses and names both rather than validating half a project and printing a verdict. `ai_docs/` remains the default and the recommended root: the parameter exists so a legacy tree can be read and migrated, not so a second one can be kept.
|
|
75
75
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kb-agentic
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.18.0
|
|
4
4
|
description: Knowledge-Base & Document-First protocol with risk-proportional triage, Vision as a guide, Signal Distillation, a complete Standalone mode and optional symbiosis with devPNT. Use for user documentation, knowledge extraction, SOPs, research notes, decision logs, knowledge management — and for answering project questions from the claim ledger and topic graph.
|
|
5
5
|
author: Antonio Pinto (https://github.com/Antoneeo)
|
|
6
6
|
copyright: (c) 2026 Antonio Pinto
|
|
@@ -24,7 +24,7 @@ Support files in the skill directory:
|
|
|
24
24
|
- `review.md`: the review discipline — when a review is due, how to request one, how to receive findings, how to review.
|
|
25
25
|
- `dispatch.md`: opt-in subagent execution of an approved plan, plus the family-wide delegation boundary (what may be delegated at all) — that part applies at any level.
|
|
26
26
|
- `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.
|
|
27
|
-
- `scripts/sdlc_check.py` + `scripts/sdlc_core.py`: the mechanical validator for the docs root (`check`, `validate`, `index`, `mark`, `benefit`, `gate`, `plan`, `orient`, `migrate`, and the knowledge overlay: `graph`, `corpus`, `claim-id`, `anchor`, `export`, `import`, `stale` (spine staleness plus `## claims` -- the time cycle's consolidated view), plus `remind` — the opt-in per-turn one-line reminder, ENFORCEMENT §4).
|
|
27
|
+
- `scripts/sdlc_check.py` + `scripts/sdlc_core.py`: the mechanical validator for the docs root (`check`, `validate`, `index`, `mark`, `benefit`, `gate`, `plan`, `orient`, `migrate`, and the knowledge overlay: `graph`, `corpus`, `claim-id`, `anchor`, `export`, `import`, `stale` (spine staleness plus `## claims` -- the time cycle's consolidated view), plus `remind` — the opt-in per-turn one-line reminder, ENFORCEMENT §4). Keep the entry point, `scripts/sdlc_core.py` and `scripts/knowledge.py` together; the last supplies common memory and KB integrity.
|
|
28
28
|
- `ENFORCEMENT.md`: optional setup for CI and hooks.
|
|
29
29
|
|
|
30
30
|
Read these files only when needed. `SKILL.md` is the operating contract; the support files are progressive resources.
|
|
@@ -38,7 +38,15 @@ Read these files only when needed. `SKILL.md` is the operating contract; the sup
|
|
|
38
38
|
- **Protect the Vision & User Style:** align all knowledge work with user strategic goals, operational preferences, and expected outcomes.
|
|
39
39
|
- **Map-First Navigation:** rely on `ai_docs/README.md`, `INDEX.md`, and `reference/INDEX.md` router for targeted retrieval before creating new documents — and before *answering from model memory* on the project's domain (`## Topic Recall`).
|
|
40
40
|
|
|
41
|
-
##
|
|
41
|
+
## Shared project memory
|
|
42
|
+
|
|
43
|
+
Project memory is available by default, independently of installed sibling lenses.
|
|
44
|
+
Read `memory.md` for the common consult/capture contract during orientation and
|
|
45
|
+
closure. Use `recall` for cross-domain discovery; `index` registers original guides,
|
|
46
|
+
plans and decisions without copying them. One owner still governs each unit.
|
|
47
|
+
The validator now ships as three files: entry point, `sdlc_core.py`, `knowledge.py`.
|
|
48
|
+
|
|
49
|
+
## Rule Zero: Triage
|
|
42
50
|
|
|
43
51
|
Always classify the request before choosing the process. Declare the chosen level to the user when you start operational work.
|
|
44
52
|
|