@antoneeo/agentic-sdlc-skill 1.17.0 → 1.19.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 +33 -0
- package/README.md +3 -1
- package/gemini-extension.json +6 -6
- package/package.json +48 -47
- package/scripts/init.js +3 -1
- package/skills/agentic-sdlc-skill/ENFORCEMENT.md +2 -0
- package/skills/agentic-sdlc-skill/SKILL.md +16 -5
- package/skills/agentic-sdlc-skill/architect.md +215 -0
- package/skills/agentic-sdlc-skill/elicitation.md +7 -0
- package/skills/agentic-sdlc-skill/guides.md +8 -0
- package/skills/agentic-sdlc-skill/review.md +82 -7
- package/skills/agentic-sdlc-skill/scripts/sdlc_check.py +387 -17
- package/skills/agentic-sdlc-skill/templates.md +81 -2
|
@@ -238,8 +238,27 @@ end_date:
|
|
|
238
238
|
use-case = what they do. Derived from the elicitation round; the Impact below
|
|
239
239
|
must cover each, and the closure review checks coverage + actor UX fit. -->
|
|
240
240
|
|
|
241
|
+
## Capability Ledger
|
|
242
|
+
<!-- the architect pass (`architect.md`), run BEFORE the Impact below. One row per
|
|
243
|
+
capability the feature requires the system to be able to DO — a verb over a
|
|
244
|
+
domain noun, naming no file. Verdict EXISTS (name the component and where) /
|
|
245
|
+
INADEQUATE (same, plus the gap) / MISSING (say what you searched). Every
|
|
246
|
+
INADEQUATE or MISSING row becomes a component with its own contract, stated
|
|
247
|
+
without naming this feature, and lands in the Impact below. Evidence is what
|
|
248
|
+
makes a verdict falsifiable: for EXISTS/INADEQUATE the one guarantee you
|
|
249
|
+
re-read to confirm it; for MISSING the terms, the tool and the areas searched
|
|
250
|
+
(and say "provisional" when the area is still PENDING in the audit plan).
|
|
251
|
+
A question, not a form: when every capability plainly exists, one line under
|
|
252
|
+
this heading answers it — still naming the component and where it lives. -->
|
|
253
|
+
|
|
254
|
+
| Capability | Verdict | Component / gap | Evidence |
|
|
255
|
+
|---|---|---|---|
|
|
256
|
+
| persist an order | EXISTS | `path/to/store.py#OrderStore` | re-read `save()`: durable, returns the id |
|
|
257
|
+
| notify the customer | MISSING | — | grep notify/alert/dispatch + send, over src/ and legacy/; no owner |
|
|
258
|
+
|
|
241
259
|
## Impact
|
|
242
|
-
<!-- existing files touched, APIs/contracts, performance, new dependencies
|
|
260
|
+
<!-- existing files touched, APIs/contracts, performance, new dependencies.
|
|
261
|
+
Derived from the ledger above: every INADEQUATE/MISSING row appears here. -->
|
|
243
262
|
|
|
244
263
|
## Security and Threat Model
|
|
245
264
|
<!-- ALWAYS mandatory, also in Standalone.
|
|
@@ -368,6 +387,39 @@ Date: 2026-06-11 (UTC)
|
|
|
368
387
|
<!-- one or two lines: release pending, environment quirks that affect everyone -->
|
|
369
388
|
```
|
|
370
389
|
|
|
390
|
+
## ai_docs/audit/reviews/REVIEW_LOG.md
|
|
391
|
+
|
|
392
|
+
One row per completed review (`review.md` §When a review is due). Append-only; it
|
|
393
|
+
is the record that the gate ran and what it was worth. **One schema for both
|
|
394
|
+
modes** — a Hybrid project's devPNT gates write to this same file, so Standalone
|
|
395
|
+
adds values to the existing columns rather than a second table.
|
|
396
|
+
|
|
397
|
+
```markdown
|
|
398
|
+
# Independent Review Log
|
|
399
|
+
|
|
400
|
+
| date | doc_key | tier | reviewer | findings_raised | findings_real | verdict | revise_rounds |
|
|
401
|
+
|---|---|---|---|---|---|---|---|
|
|
402
|
+
| 2026-06-11 | ANALYSIS_login_sso.md | design | subagent (opus, fresh ctx) | 4 | 3 | PASS | 2 |
|
|
403
|
+
| 2026-06-12 | diff feature/sso-login | closure | self-pass (declared; no subagent facility) | 2 | 2 | PASS | 1 |
|
|
404
|
+
|
|
405
|
+
## Notes
|
|
406
|
+
<!-- One short paragraph per review that found something worth remembering: what
|
|
407
|
+
the findings actually were, and what changed because of them. The table
|
|
408
|
+
answers "was it reviewed and by what"; this answers "what did it find" —
|
|
409
|
+
which is where `review.md`'s per-finding outcomes live. Omit for a clean
|
|
410
|
+
review; a row with 0 findings needs no note. -->
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
`tier` is the moment plus, in Hybrid, the reviewer weight: `design`, `design (late)`
|
|
414
|
+
and `closure` (Standalone); `deep`, `light`, `code`, `guide`, `vision` (devPNT gates
|
|
415
|
+
and the Vision blind check). The validator reads this column by its header name, so
|
|
416
|
+
extra or reordered columns are fine — but the header must say `tier`. `reviewer`
|
|
417
|
+
records the realization actually used — fresh subagent, one-shot client run, or a
|
|
418
|
+
**declared** self-pass. Writing `self-pass` where independence was unavailable is
|
|
419
|
+
honest; writing nothing, or implying independence you did not have, is the failure
|
|
420
|
+
this column exists to prevent. `findings_real` is how many raised findings survived
|
|
421
|
+
triage: over time it is the only evidence of whether the gate earns its cost.
|
|
422
|
+
|
|
371
423
|
## ai_docs/audit/HANDOFF_[feature].md — volatile resume logistics (ephemeral)
|
|
372
424
|
|
|
373
425
|
**Resume logistics ONLY; the ANALYSIS Diary keeps the durable narrative (DRY).**
|
|
@@ -399,12 +451,39 @@ Canonical docs: they open with the header (`description:`/`status:`) so they ent
|
|
|
399
451
|
|
|
400
452
|
```markdown
|
|
401
453
|
---
|
|
402
|
-
description: Stack, directory structure and architectural patterns of the project.
|
|
454
|
+
description: Stack, directory structure, component map and architectural patterns of the project.
|
|
403
455
|
status: CURRENT
|
|
404
456
|
---
|
|
405
457
|
# Project Architecture
|
|
406
458
|
## Technology Stack
|
|
407
459
|
## Directory Structure
|
|
460
|
+
## Component Map
|
|
461
|
+
<!-- The inventory the architect pass reads BEFORE searching the code
|
|
462
|
+
(`architect.md` §2). One row per component that OWNS a capability:
|
|
463
|
+
Capability = what it lets the system DO (a verb over a domain noun, naming
|
|
464
|
+
no file). Contract = what it guarantees its consumers, in one line, stated
|
|
465
|
+
without naming any single consumer. Where = a path, or `path#symbol` when
|
|
466
|
+
the component is smaller than its file.
|
|
467
|
+
Seeded at bootstrap; a row is added or corrected in the SAME closure that
|
|
468
|
+
builds — or merely discovers — a component, and the area is marked ANALYZED.
|
|
469
|
+
A directory is not a component: rows name what owns a capability, not where
|
|
470
|
+
files sit (that is ## Directory Structure above). An absent or stale map is
|
|
471
|
+
why the next feature rules the same capability MISSING a second time and
|
|
472
|
+
builds it again. -->
|
|
473
|
+
|
|
474
|
+
Coverage: whatever `audit/audit_plan.md` marks ANALYZED — **read it, do not trust a
|
|
475
|
+
list restated here** (a hand-copied list is a cache with no invalidation). Outside
|
|
476
|
+
those areas this map is **unread, not empty**: it can never ground a MISSING
|
|
477
|
+
verdict, and the code is searched instead (`architect.md` §2).
|
|
478
|
+
|
|
479
|
+
| Component | Capability it owns | Contract | Where |
|
|
480
|
+
|---|---|---|---|
|
|
481
|
+
| ... | ... | ... | ... |
|
|
482
|
+
|
|
483
|
+
<!-- Where is `path/to/file.py#Symbol`. Leave the placeholder row untouched until
|
|
484
|
+
the map has a real component: the validator skips an all-`...` row, so a
|
|
485
|
+
freshly seeded project is never nagged about a table nobody has filled in. -->
|
|
486
|
+
|
|
408
487
|
## Architectural Patterns
|
|
409
488
|
```
|
|
410
489
|
|