@antoneeo/kb-agentic-skill 1.4.6 → 1.4.7
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
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Every significant change to this skill is recorded here.
|
|
4
4
|
|
|
5
|
+
## [1.4.7] - 2026-08-06
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Shared-spine sync: the scoped re-review contradicted `dispatch.md` (ACTIVE in this lens).**
|
|
9
|
+
`dispatch.md` said "exactly three review touches per task, never a loop" while `review.md`
|
|
10
|
+
required every review-driven correction to be re-reviewed. Reconciled: the scoped re-review is
|
|
11
|
+
a round inside slot 2 or 3, never a fourth slot. Also in the shared `review.md`: an unproven or
|
|
12
|
+
stale completion claim is now a reviewer finding; a PASS carrying findings is provisional until
|
|
13
|
+
its corrections pass a round; the single log row keeps the round-1 verdict (`FAIL → PASS`).
|
|
14
|
+
Found by the code lens's late design review of F-034.
|
|
15
|
+
|
|
5
16
|
## [1.4.6] - 2026-08-06
|
|
6
17
|
|
|
7
18
|
### Changed
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kb-agentic-skill",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.7",
|
|
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.4.
|
|
3
|
+
"version": "1.4.7",
|
|
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",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kb-agentic
|
|
3
|
-
version: 1.4.
|
|
3
|
+
version: 1.4.7
|
|
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 and knowledge management.
|
|
5
5
|
author: Antonio Pinto (https://github.com/Antoneeo)
|
|
6
6
|
copyright: (c) 2026 Antonio Pinto
|
|
@@ -1,87 +1,96 @@
|
|
|
1
|
-
# Subagent Execution Discipline
|
|
2
|
-
|
|
3
|
-
Opt-in orchestration for L3 work with an approved design: the orchestrator
|
|
4
|
-
drives a `PLAN_[feature].md` through subagents instead of implementing every
|
|
5
|
-
task in the same session. Default stays same-session; this is an escalation,
|
|
6
|
-
never a requirement.
|
|
7
|
-
|
|
8
|
-
## Trigger
|
|
9
|
-
|
|
10
|
-
Only for L3 (an approved E-TDD in Hybrid, or an ANALYSIS Action Plan in
|
|
11
|
-
Standalone). Never for L1/L2 — the plan/ledger machinery is overhead a small
|
|
12
|
-
change does not need. The plan is always `derived-from` the accepted design:
|
|
13
|
-
it is never independently authored, exactly like an E-TDD is never authored
|
|
14
|
-
without an E-ISP.
|
|
15
|
-
|
|
16
|
-
## The loop
|
|
17
|
-
|
|
18
|
-
1. `sdlc_check.py plan validate PLAN_[feature].md` — zero-execution schema +
|
|
19
|
-
confinement + ledger cross-check. Non-zero exit = **no dispatch**. This is
|
|
20
|
-
the hard gate: "no valid plan, no dispatch."
|
|
21
|
-
2. For each task, in plan order:
|
|
22
|
-
- Read the task's status from the sidecar ledger
|
|
23
|
-
(`PLAN_[feature].ledger.json`). `status: done` (exact sentinel) → skip,
|
|
24
|
-
never re-dispatch. Anything else (pending, failed, missing, or a
|
|
25
|
-
corrupt-but-parseable entry) → treat as pending and dispatch.
|
|
26
|
-
- `sdlc_check.py plan brief PLAN_[feature].md --task <id>` — prints the
|
|
27
|
-
task block, the `produces` of prior-order tasks (interfaces), and
|
|
28
|
-
`guides` pointers (paths, never pasted content) to stdout.
|
|
29
|
-
- Spawn the subagent with that brief as its entire context window.
|
|
30
|
-
- Run `task.verify` out of band (the orchestrator executes it — the
|
|
31
|
-
validator only ever prints it, never runs it) plus the one-shot review
|
|
32
|
-
below.
|
|
33
|
-
- Write `{status, verify_result, timestamp}` back to the ledger. The
|
|
34
|
-
validator never writes the ledger — single-writer, orchestrator-owned.
|
|
35
|
-
|
|
36
|
-
**Guide consumption under dispatch.** Selecting each task's `guides` field IS the
|
|
37
|
-
consult trigger (`guides.md` §0) applied at plan-authoring time: the orchestrator
|
|
38
|
-
runs the router lookup (project router `ai_docs/reference/INDEX.md` + the agent-KB
|
|
39
|
-
router) when populating `guides`. A dispatched context-free subagent does **NOT**
|
|
40
|
-
run its own router consult — it reads the guide pointers handed to it in the
|
|
41
|
-
brief. The router verdict (Rule Zero) is therefore declared ONCE, by the
|
|
42
|
-
orchestrator, when it authors the plan; a dispatched subagent does not declare
|
|
43
|
-
one. (Proactive guide-creation stays at closure — the same broad final pass
|
|
44
|
-
below — so it needs no separate dispatch hook.)
|
|
45
|
-
|
|
46
|
-
## Model tiers (client-relative, no provider names)
|
|
47
|
-
|
|
48
|
-
- Default dispatch: **economy** implementer tier.
|
|
49
|
-
- After **two** consecutive `verify_result: fail` on the same task: escalate
|
|
50
|
-
to the **deep** tier for the retry (ADR 2026-07-02). Do not escalate on the
|
|
51
|
-
first failure — a single fail is often a brief or environment issue, not a
|
|
52
|
-
capability gap.
|
|
53
|
-
|
|
54
|
-
## Review slots — one-shot, not iterative
|
|
55
|
-
|
|
56
|
-
Exactly three review touches per task, never a loop:
|
|
57
|
-
|
|
58
|
-
1. Inline self-review by the implementer subagent before it reports done
|
|
59
|
-
(the standard critical-review pass, not a separate call).
|
|
60
|
-
2. One reviewer pass per task (Hybrid: reuse the devPNT code-review gate;
|
|
61
|
-
Standalone: the `review.md` discipline).
|
|
62
|
-
3. One broad final pass over the whole plan at closure, after all tasks are
|
|
63
|
-
DONE — catches cross-task drift a per-task review cannot see.
|
|
64
|
-
|
|
65
|
-
If a review FAILs, fix and re-run `verify` — that is a normal loop iteration
|
|
66
|
-
via the ledger's fail path, not an extra review slot.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
1
|
+
# Subagent Execution Discipline
|
|
2
|
+
|
|
3
|
+
Opt-in orchestration for L3 work with an approved design: the orchestrator
|
|
4
|
+
drives a `PLAN_[feature].md` through subagents instead of implementing every
|
|
5
|
+
task in the same session. Default stays same-session; this is an escalation,
|
|
6
|
+
never a requirement.
|
|
7
|
+
|
|
8
|
+
## Trigger
|
|
9
|
+
|
|
10
|
+
Only for L3 (an approved E-TDD in Hybrid, or an ANALYSIS Action Plan in
|
|
11
|
+
Standalone). Never for L1/L2 — the plan/ledger machinery is overhead a small
|
|
12
|
+
change does not need. The plan is always `derived-from` the accepted design:
|
|
13
|
+
it is never independently authored, exactly like an E-TDD is never authored
|
|
14
|
+
without an E-ISP.
|
|
15
|
+
|
|
16
|
+
## The loop
|
|
17
|
+
|
|
18
|
+
1. `sdlc_check.py plan validate PLAN_[feature].md` — zero-execution schema +
|
|
19
|
+
confinement + ledger cross-check. Non-zero exit = **no dispatch**. This is
|
|
20
|
+
the hard gate: "no valid plan, no dispatch."
|
|
21
|
+
2. For each task, in plan order:
|
|
22
|
+
- Read the task's status from the sidecar ledger
|
|
23
|
+
(`PLAN_[feature].ledger.json`). `status: done` (exact sentinel) → skip,
|
|
24
|
+
never re-dispatch. Anything else (pending, failed, missing, or a
|
|
25
|
+
corrupt-but-parseable entry) → treat as pending and dispatch.
|
|
26
|
+
- `sdlc_check.py plan brief PLAN_[feature].md --task <id>` — prints the
|
|
27
|
+
task block, the `produces` of prior-order tasks (interfaces), and
|
|
28
|
+
`guides` pointers (paths, never pasted content) to stdout.
|
|
29
|
+
- Spawn the subagent with that brief as its entire context window.
|
|
30
|
+
- Run `task.verify` out of band (the orchestrator executes it — the
|
|
31
|
+
validator only ever prints it, never runs it) plus the one-shot review
|
|
32
|
+
below.
|
|
33
|
+
- Write `{status, verify_result, timestamp}` back to the ledger. The
|
|
34
|
+
validator never writes the ledger — single-writer, orchestrator-owned.
|
|
35
|
+
|
|
36
|
+
**Guide consumption under dispatch.** Selecting each task's `guides` field IS the
|
|
37
|
+
consult trigger (`guides.md` §0) applied at plan-authoring time: the orchestrator
|
|
38
|
+
runs the router lookup (project router `ai_docs/reference/INDEX.md` + the agent-KB
|
|
39
|
+
router) when populating `guides`. A dispatched context-free subagent does **NOT**
|
|
40
|
+
run its own router consult — it reads the guide pointers handed to it in the
|
|
41
|
+
brief. The router verdict (Rule Zero) is therefore declared ONCE, by the
|
|
42
|
+
orchestrator, when it authors the plan; a dispatched subagent does not declare
|
|
43
|
+
one. (Proactive guide-creation stays at closure — the same broad final pass
|
|
44
|
+
below — so it needs no separate dispatch hook.)
|
|
45
|
+
|
|
46
|
+
## Model tiers (client-relative, no provider names)
|
|
47
|
+
|
|
48
|
+
- Default dispatch: **economy** implementer tier.
|
|
49
|
+
- After **two** consecutive `verify_result: fail` on the same task: escalate
|
|
50
|
+
to the **deep** tier for the retry (ADR 2026-07-02). Do not escalate on the
|
|
51
|
+
first failure — a single fail is often a brief or environment issue, not a
|
|
52
|
+
capability gap.
|
|
53
|
+
|
|
54
|
+
## Review slots — one-shot, not iterative
|
|
55
|
+
|
|
56
|
+
Exactly three review touches per task, never a loop:
|
|
57
|
+
|
|
58
|
+
1. Inline self-review by the implementer subagent before it reports done
|
|
59
|
+
(the standard critical-review pass, not a separate call).
|
|
60
|
+
2. One reviewer pass per task (Hybrid: reuse the devPNT code-review gate;
|
|
61
|
+
Standalone: the `review.md` discipline).
|
|
62
|
+
3. One broad final pass over the whole plan at closure, after all tasks are
|
|
63
|
+
DONE — catches cross-task drift a per-task review cannot see.
|
|
64
|
+
|
|
65
|
+
If a review FAILs, fix and re-run `verify` — that is a normal loop iteration
|
|
66
|
+
via the ledger's fail path, not an extra review slot.
|
|
67
|
+
|
|
68
|
+
**The scoped re-review is a round INSIDE slot 2 or 3, never a fourth slot.**
|
|
69
|
+
`review.md` §Receiving requires every review-driven correction to be
|
|
70
|
+
re-reviewed against the correction alone — that round belongs to the slot whose
|
|
71
|
+
findings caused it, and is bounded by the same cap of 3 rounds. "Never a loop"
|
|
72
|
+
bounds the SLOTS (no unbounded re-reviewing of a task), not the rounds inside
|
|
73
|
+
one slot: a fix nobody looked at is the defect the round exists to catch. Slot 1
|
|
74
|
+
is the implementer's own pass, not an independent review, so its fixes carry no
|
|
75
|
+
re-review round. The ledger records the round on the task's fail path as usual.
|
|
76
|
+
|
|
77
|
+
## Ledger protocol summary
|
|
78
|
+
|
|
79
|
+
Read → skip-if-done → dispatch-if-pending → write. The ledger is the only
|
|
80
|
+
memory the loop needs across sessions or context compaction: a resumed
|
|
81
|
+
orchestrator re-reads it and picks up exactly where it left off, never
|
|
82
|
+
re-running a DONE task.
|
|
83
|
+
|
|
84
|
+
## Degradation
|
|
85
|
+
|
|
86
|
+
No subagent-spawning tool available → the orchestrator runs each task in the
|
|
87
|
+
same session, against the same plan and ledger, with the same one-shot review
|
|
88
|
+
slots. No capability is lost, only the parallelism/isolation subagents would
|
|
89
|
+
have added.
|
|
90
|
+
|
|
91
|
+
## Hybrid note
|
|
92
|
+
|
|
93
|
+
The plan's `derived-from` points at the accepted E-TDD document key. Per-task
|
|
94
|
+
review reuses the devPNT independent reviewers (§4.6 code review gate) rather
|
|
95
|
+
than restating review doctrine — see `review.md` for the single definition
|
|
96
|
+
both modes share.
|
|
@@ -124,14 +124,20 @@ A fix made in response to a finding is new, unreviewed work — stopping after
|
|
|
124
124
|
therefore gets a **scoped re-review** before the review can PASS: hand the
|
|
125
125
|
re-reviewer the original findings and ONLY the correction (the fix diff/range
|
|
126
126
|
for code, the amended sections for a document), and require a per-finding
|
|
127
|
-
verdict — `ADDRESSED`, `NOT ADDRESSED`, or `CONTESTED` with evidence.
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
verdict — `ADDRESSED`, `NOT ADDRESSED`, or `CONTESTED` with evidence. **A PASS
|
|
128
|
+
that carried findings is provisional until its corrections pass that round** —
|
|
129
|
+
the commonest real case is a PASS with non-blocking findings the author then
|
|
130
|
+
fixes, and stopping there ships precisely the unreviewed version this rule
|
|
131
|
+
exists to catch. The re-review also checks the correction itself for new
|
|
132
|
+
blocker-level breakage — and nothing else: out-of-scope observations become separately
|
|
130
133
|
recorded findings, never an extension of the loop. Expect two rounds as the
|
|
131
134
|
norm, not the exception — round 1 finds, round 2 verifies the fixes — inside
|
|
132
135
|
the same cap of 3 (§When a review is due). One logical review stays ONE
|
|
133
|
-
REVIEW_LOG row
|
|
134
|
-
|
|
136
|
+
REVIEW_LOG row — a scoped re-review is a round, not a new review — with the
|
|
137
|
+
rounds narrated in the row's notes and **the verdict column carrying the
|
|
138
|
+
round-1 verdict and the final one (`FAIL → PASS`), never the final one alone**:
|
|
139
|
+
a first-round FAIL is the highest-value evidence the gate produces (§When a
|
|
140
|
+
review is due), and collapsing it into a bare `PASS` erases exactly that.
|
|
135
141
|
|
|
136
142
|
## Reviewing
|
|
137
143
|
|
|
@@ -145,6 +151,15 @@ When you are the reviewer:
|
|
|
145
151
|
(see `## Requesting`).
|
|
146
152
|
- Cite evidence as `file:line` for every finding — a finding without a
|
|
147
153
|
location is not actionable.
|
|
154
|
+
- **An unproven completion claim is a finding** (closure reviews, on the diff).
|
|
155
|
+
When the work under review states or implies that something passes, is fixed,
|
|
156
|
+
is clean or is complete, the evidence must be present and must post-date the
|
|
157
|
+
final relevant change; a claim resting on a stale run, on a narrower check
|
|
158
|
+
than the claim needs, or on a delegated agent's own report rather than the
|
|
159
|
+
diff, is a finding — name the claim and what would prove it. This is the
|
|
160
|
+
enforcement point of the author-side rule in `SKILL.md` §5 Closure, and the
|
|
161
|
+
reason a requester hands it over is that the reviewer cannot cite a rule it
|
|
162
|
+
was never given.
|
|
148
163
|
- **Say what you could NOT verify.** When a claim in the artifact cannot be
|
|
149
164
|
verified from the inputs you were given (it lives in unchanged code, another
|
|
150
165
|
document, or an environment you cannot reach), report it as a
|
|
@@ -447,8 +447,8 @@ adds values to the existing columns rather than a second table.
|
|
|
447
447
|
|
|
448
448
|
| date | doc_key | tier | reviewer | findings_raised | findings_real | verdict | revise_rounds |
|
|
449
449
|
|---|---|---|---|---|---|---|---|
|
|
450
|
-
| 2026-06-11 | ANALYSIS_login_sso.md | design | subagent (opus, fresh ctx) | 4 | 3 | PASS | 2 |
|
|
451
|
-
| 2026-06-12 | diff feature/sso-login | closure | self-pass (declared; no subagent facility) | 2 | 2 | PASS |
|
|
450
|
+
| 2026-06-11 | ANALYSIS_login_sso.md | design | subagent (opus, fresh ctx) | 4 | 3 | FAIL → PASS | 2 |
|
|
451
|
+
| 2026-06-12 | diff feature/sso-login | closure | self-pass (declared; no subagent facility) | 2 | 2 | PASS with findings → corrections re-reviewed, PASS | 2 |
|
|
452
452
|
|
|
453
453
|
## Notes
|
|
454
454
|
<!-- One short paragraph per review that found something worth remembering: what
|
|
@@ -467,6 +467,13 @@ records the realization actually used — fresh subagent, one-shot client run, o
|
|
|
467
467
|
honest; writing nothing, or implying independence you did not have, is the failure
|
|
468
468
|
this column exists to prevent. `findings_real` is how many raised findings survived
|
|
469
469
|
triage: over time it is the only evidence of whether the gate earns its cost.
|
|
470
|
+
`revise_rounds` counts **review rounds**, not fix cycles: the first review is round 1
|
|
471
|
+
and every scoped re-review adds one. A review that produced findings which were then
|
|
472
|
+
corrected therefore always reads ≥ 2 — the corrections are unreviewed work until a
|
|
473
|
+
round verifies them (`review.md` §Receiving) — and 3 is the ceiling, past which the
|
|
474
|
+
residue goes to the user rather than into a fourth round. `verdict` carries the
|
|
475
|
+
round-1 verdict and the final one when they differ (`FAIL → PASS`): collapsing a
|
|
476
|
+
first-round FAIL into a bare `PASS` erases the evidence this log exists to keep.
|
|
470
477
|
Concurrent reviews: `init` writes a `.gitattributes` stanza giving this file
|
|
471
478
|
`merge=union` — a **built-in** driver (no per-clone `git config`, unlike
|
|
472
479
|
`merge=ours`, which silently does nothing until every clone configures it).
|