@antoneeo/agentic-sdlc-skill 1.19.0 → 1.20.2

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.
@@ -0,0 +1,100 @@
1
+ # Domain Routing — which lens owns this unit of work
2
+
3
+ The family ships as sibling skills built from one shared core: each lens carries its
4
+ own **fidelity discipline** (what the work must be faithful to) and its own validation
5
+ rules, over **one** `ai_docs/` tree. This file answers one question: *which lens's
6
+ method governs THIS unit of work?* It does not decide where the resulting file is
7
+ stored (step 5), and it never runs before the triage level is known — L1 never
8
+ reaches it.
9
+
10
+ ## 0. Installed-lens detection — run first, fail open
11
+
12
+ Look in the skills directory this skill was loaded from for sibling lenses of the
13
+ family, identified by the `name:` in their `SKILL.md`:
14
+
15
+ | Lens | Skill name | Faithful to |
16
+ |---|---|---|
17
+ | code | `agentic-sdlc` | this repository's code |
18
+ | knowledge | `kb-agentic` | documents the user supplied |
19
+ | marketing | `mkt-agentic-sdlc` | market evidence |
20
+
21
+ - **No sibling installed, or the directory cannot be read** → the router does NOT run.
22
+ Work under the loaded lens; read no further. This is the normal single-lens case and
23
+ it costs nothing.
24
+ - **At least one sibling installed** → run the router below, after the level test, on
25
+ every L2, L3 and Spike.
26
+
27
+ Fail-open is deliberate: a detection that cannot answer must never block the work. A
28
+ single-lens project that silently gains a router verdict it cannot act on is worse
29
+ than no verdict at all.
30
+
31
+ ## 1. The router
32
+
33
+ Run the steps in order. Stop at the first one that decides.
34
+
35
+ 1. **Fidelity / purpose.** What must the work be faithful to?
36
+ - *This repository's code* → provisional **code**; continue to step 2.
37
+ - *Documents the user supplied* → **knowledge**. Decided.
38
+ - *Market evidence* → **marketing**. Decided.
39
+ - *A deliverable whose purpose is market-facing persuasion* (copy, positioning,
40
+ campaign material) → **marketing regardless of source**. Decided. Without this
41
+ branch the marketing lens is reachable only when the *source* is market evidence,
42
+ never when the *purpose* is marketing — and the launch post written from the
43
+ release notes routes to code.
44
+
45
+ 2. **Deliverable class** — only on the provisional `code` branch. The predicate is on
46
+ the deliverable, not on its audience:
47
+ - *Part of this repository's own document set, shipping and maintained with the
48
+ code* (`ai_docs/`, README, CHANGELOG, comprehension guides, migration notes) →
49
+ **code**; continue to step 3.
50
+ - *A standalone knowledge deliverable whose fidelity extends beyond this repo's
51
+ code* (user documentation for an external audience, a distilled corpus) →
52
+ **knowledge**. Decided; step 3 is not reached.
53
+
54
+ 3. **Build-consumed override** — only on the provisional `code` branch, never
55
+ overriding a *marketing* or *supplied-documents* verdict. *Is the deliverable a
56
+ file the project's build or test toolchain consumes?* Executable or imported
57
+ source: yes. Committed Markdown: no. A yes confirms **code**.
58
+
59
+ 4. **Split rule.** A request whose work must be faithful to two sources is **two units
60
+ of work**, split before routing: the distillation (knowledge) and the design that
61
+ cites it (code) each route alone. The router returns one lens per unit; it never
62
+ returns two lenses for one unit.
63
+
64
+ 5. **Owning tree.** A straddling artifact keeps its lens for *method* and takes this
65
+ repository's tree and validator for *storage*. Lens and location are separate
66
+ answers — a marketing-lens document written in a code repository still lives in
67
+ that repository's `ai_docs/` and passes that project's validator.
68
+
69
+ 6. **Cross-check.** If the verdict contradicts an installed skill's `description`, the
70
+ descriptions are wrong: fix them. Never silently override the test with a
71
+ description.
72
+
73
+ ## 2. Worked verdicts
74
+
75
+ | Request | 1 | 2 | 3 | Lens |
76
+ |---|---|---|---|---|
77
+ | "write the API reference docs" (hand-written, ships with the repo) | code | repo's own doc set → code | not build-consumed → no flip | **code** |
78
+ | "write user documentation for our customers' admins" | code | standalone knowledge deliverable → knowledge | n/a (left the code branch at 2) | **knowledge** |
79
+ | "write the API reference docs" (generated — the work edits docstrings in source) | code | repo's own doc set → code | **build-consumed: yes → confirms code** | **code** |
80
+ | "write a comprehension guide for the auth module" | code | repo's own doc set → code | not build-consumed → no flip | **code** |
81
+ | "turn these vendor specs into a technical design" | split (step 4): spec = supplied docs; design = this repo | — | — | **knowledge** for the distillation; **code** for the design, citing it |
82
+ | "write the pricing page copy from our market research" | **purpose: market-facing → marketing** | never reached | never reached | **marketing**; stored in this repo's tree (step 5) |
83
+ | "write the launch blog post from the release notes" | purpose: market-facing → marketing | never reached | never reached | **marketing** |
84
+
85
+ ## 3. Acting on the verdict
86
+
87
+ The verdict binds the **method and the validation rules**, not the storage:
88
+
89
+ - **Verdict = the loaded lens** → continue; nothing changes.
90
+ - **Verdict = a sibling lens** → say so, and work that unit under the sibling's method
91
+ and its rule set (its templates, its mandatory risk section — code
92
+ `## Security and Threat Model`, knowledge `## Sources and Verification`, marketing
93
+ `## Threat Map / Plan Risks`). The artifact is written with an explicit
94
+ `domain:` field so the answer survives the session, and it stays in this project's
95
+ `ai_docs/` tree (step 5).
96
+ - **The unit was split** (step 4) → route and declare each half separately.
97
+
98
+ Documents under `vision/` — the project vision, principles, the roadmap — sit **above**
99
+ the domain split: they belong to no lens and are validated by the core's structural
100
+ rules only. The router is not consulted for them.