@antoneeo/course-creator 0.1.0-beta.1 → 0.1.0-beta.13
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 +102 -0
- package/README.md +4 -2
- package/gemini-extension.json +1 -1
- package/package.json +7 -2
- package/scripts/init.js +62 -62
- package/scripts/lib.js +98 -98
- package/scripts/postinstall.js +16 -16
- package/scripts/preuninstall.js +12 -12
- package/skills/course-creator/ENFORCEMENT.md +17 -5
- package/skills/course-creator/SKILL.md +8 -4
- package/skills/course-creator/dispatch.md +5 -5
- package/skills/course-creator/docs_site/app.js +1133 -0
- package/skills/course-creator/docs_site/index.html +17 -0
- package/skills/course-creator/docs_site/strings.js +323 -0
- package/skills/course-creator/docs_site/style.css +288 -0
- package/skills/course-creator/elicitation.md +23 -8
- package/skills/course-creator/guides.md +7 -1
- package/skills/course-creator/memory.md +1 -1
- package/skills/course-creator/review.md +107 -13
- package/skills/course-creator/routing.md +4 -0
- package/skills/course-creator/scripts/course_check.py +132 -132
- package/skills/course-creator/scripts/docs_site.py +1448 -0
- package/skills/course-creator/scripts/knowledge.py +620 -62
- package/skills/course-creator/scripts/sdlc_core.py +958 -84
- package/skills/course-creator/scripts/shared_files.py +10 -0
- package/skills/course-creator/scripts/shared_manifest.json +23 -14
- package/skills/course-creator/templates.md +51 -8
- package/skills/course-creator/vision.md +308 -245
|
@@ -47,8 +47,8 @@ The consolidated view is `sdlc_check.py stale` (the overlay intercepts
|
|
|
47
47
|
the spine command, preserves its output, flags and exit code --
|
|
48
48
|
`--hybrid` included -- and appends `## claims` only when nonempty). The
|
|
49
49
|
orient append prints one count line at session start, only when dirty
|
|
50
|
-
and always fail-open. Event-driven by design: reconciliation §2 runs
|
|
51
|
-
|
|
50
|
+
and always fail-open. Event-driven by design: reconciliation §2 runs `stale` at the unit's
|
|
51
|
+
closure, once for every supersession since the last one; nothing polls per turn.
|
|
52
52
|
|
|
53
53
|
## 2. Check in CI (recommended for teams)
|
|
54
54
|
|
|
@@ -104,9 +104,21 @@ Semantics: exit code 2 + message on stderr ⇒ the write is blocked and the mess
|
|
|
104
104
|
- The hook assumes the working directory is the project root (standard behavior of Claude Code hooks).
|
|
105
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
|
+
### Verdict check: `verdict` (PreToolUse -- manual for this lens)
|
|
108
|
+
|
|
109
|
+
`sdlc_check.py verdict --hook` refuses an Edit, Write, MultiEdit or NotebookEdit when the
|
|
110
|
+
session transcript shows no guide-router verdict (`router: …`, or a level-1 declaration)
|
|
111
|
+
or a guide the verdict names was never read; it is silent in projects without guides and
|
|
112
|
+
whenever it cannot tell. The code package (`agentic-sdlc`) wires it machine-wide on
|
|
113
|
+
Claude Code; this package does not. To wire it by hand, add a `PreToolUse` entry with
|
|
114
|
+
matcher `Edit|Write|MultiEdit|NotebookEdit` and command
|
|
115
|
+
`python "<skills dir>/course-creator/scripts/sdlc_check.py" verdict --hook; exit 0` — the `; exit 0`
|
|
116
|
+
keeps a missing or older validator from exiting 2, which would block every edit. Cost
|
|
117
|
+
and residuals: `ai_docs/vision/rulings.md` r34.
|
|
118
|
+
|
|
107
119
|
## 4. SessionStart hook (orientation, recommended default)
|
|
108
120
|
|
|
109
|
-
Emits the `ai_docs/` orientation
|
|
121
|
+
Emits the `ai_docs/` orientation to stdout at session start, in the order an arriving agent needs it: the Rule-Zero triage line, the lens choice when sibling lenses are installed, the guide router (`reference/INDEX.md`, one line per guide), the workstream registry (`audit/handoff.md`, one line per workstream, then the project-wide notes), the reading guide (`README.md`), then pointers to the manifest (`INDEX.md`) and to the full files — so the agent begins already oriented instead of reading them only if it remembers to. The whole output stays under 9,500 characters: Claude Code injects a hook's output up to 10,000 and, above that, only a 2,000-character preview, which is how the router once never reached a session (F-075). A section that does not fit is cut at a line with a pointer to its file, and a note says when one client runs the hook from two settings entries. It is **fail-open**: a missing or unreadable doc is skipped, and it always exits 0 — a broken or empty `ai_docs/` never blocks the session. It is **zero-execution** (it reads and prints, never runs anything).
|
|
110
122
|
|
|
111
123
|
**Wire it on every project that has `ai_docs/` and a Python interpreter.** It was opt-in until v1.16.0 and the field result was the defect this level exists to prevent: the guide router stayed unread unless the user asked for it by hand, so guides were written and never consulted. Prompt-level placement (Rule Zero declares the router verdict; Phase 1 reads the router) carries the process on its own — this hook is the backstop that survives long contexts, compaction and a session that never enters Phase 1 explicitly. Skip it only where Python is unavailable, and know what you are trading.
|
|
112
124
|
|
|
@@ -211,13 +223,13 @@ a release ran against a `GUIDE_release.md` the session never consulted, because
|
|
|
211
223
|
ONE constant line at every prompt, and its first duty is that one: decide whether the
|
|
212
224
|
skill governs the work in front of you and, if it does, load it once.
|
|
213
225
|
|
|
214
|
-
Cost:
|
|
226
|
+
Cost: 393 characters, ~66 tokens per prompt, paid on every turn including
|
|
215
227
|
trivial ones. That is admissible only because the owner accepted it explicitly
|
|
216
228
|
(`ai_docs/vision/rulings.md` r19, the "no ceremony ratchet" Non-Goal's second door) --
|
|
217
229
|
and the acceptance was for a FLAT cost. Hence the contract, guarded by
|
|
218
230
|
`scripts/test_remind.py`: the line is **constant and reads nothing** (so nothing repo-
|
|
219
231
|
or session-controlled rides into the agent's context through it, and the cost cannot
|
|
220
|
-
grow with the session), it is **one line under
|
|
232
|
+
grow with the session), it is **one line under 600 characters** (r32 raised r19's 500 to carry the lens choice), and it **can never
|
|
221
233
|
break a prompt** (argv ignored whole, always exit 0). A trivial turn pays a yes/no
|
|
222
234
|
judgement, never a load.
|
|
223
235
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: course-creator
|
|
3
|
-
version: 0.1.0-beta.
|
|
3
|
+
version: 0.1.0-beta.13
|
|
4
4
|
description: Design and improve courses that teach a defined learner through sourced, progressive explanations. Use when the deliverable is instruction or a learning path; route corpus intake to kb-agentic and persuasive campaigns to marketing-agentic.
|
|
5
5
|
author: Antonio Pinto (https://github.com/Antoneeo)
|
|
6
6
|
copyright: (c) 2026 Antonio Pinto
|
|
@@ -13,6 +13,9 @@ Create a course that helps a specific learner understand and use something. The
|
|
|
13
13
|
|
|
14
14
|
This is the course lens of the Agentic SDLC family. It shares `vision.md`, `review.md`, `guides.md`, `routing.md`, `dispatch.md`, `memory.md`, `scripts/sdlc_core.py`, and `scripts/knowledge.py` with the other lenses. It adds `slide_content.md`, `templates.md`, `learning_design.md`, `source_check.md`, `simulation.md`, `feedback.md`, `elicitation.md`, `ENFORCEMENT.md`, `scripts/sdlc_check.py` and `scripts/course_check.py`. Read a support file when its phase needs it.
|
|
15
15
|
|
|
16
|
+
`scripts/docs_site.py --root <project> --open` (`--zip <file>` to share): opens in the user's browser a read-only site of what the agent reads; use it to show the project state.
|
|
17
|
+
It is what users mean by "docs site", "minisito", "documentation site" or "project site": run it, never build a page by hand.
|
|
18
|
+
|
|
16
19
|
## Rule Zero: Triage and route
|
|
17
20
|
|
|
18
21
|
If `agentic-sdlc`, `kb-agentic`, or `mkt-agentic-sdlc` is installed alongside this skill, consult `routing.md` for the owner of the **deliverable**, then declare the lens. L1 never reaches it. A course from supplied documents is course work; ingestion and verification of the corpus is a separate knowledge unit. A commercial campaign is marketing work. If the request contains distinct deliverables, split them before choosing a lens.
|
|
@@ -38,6 +41,7 @@ Before authoring a governed artifact, know which tier is authoring and follow `r
|
|
|
38
41
|
|
|
39
42
|
| When | Write or update |
|
|
40
43
|
|---|---|
|
|
44
|
+
| New L3 unit, the moment the level is declared | `audit/requests/REQUEST_course_<slug>.md`: R1 quotes the requester's opening words verbatim, before the Vision Gate and the first question; every later statement of theirs that settles something (answer, approval, cost, ruling) is appended before acting on it. Append-only, never deleted; artifacts cite its entries. |
|
|
41
45
|
| New L3 course | `vision/features/VISION_course_<slug>.md` with explicit `domain: course`; approve it before design. |
|
|
42
46
|
| Approved Vision and a design need | `solutions/ANALYSIS_course_<slug>.md` with course risks; `D-UC.md`, `D-IC.md`, `P-TM.md`, graph and plan detail its IDs. |
|
|
43
47
|
| New production or substantial revision | Deliver the complete textual source in `slide_content.md`; declare its versioned content contract in COURSE_PLAN. |
|
|
@@ -45,7 +49,7 @@ Before authoring a governed artifact, know which tier is authoring and follow `r
|
|
|
45
49
|
| A course is tested | `SIMULATION_REPORT.md` names both independent attempts, control, material version and limitations; no simulated PASS changes efficacy status. |
|
|
46
50
|
| Real feedback arrives | `FEEDBACK_REPORT.md` identifies course/version/module and evidence; propose a course correction or a method improvement. |
|
|
47
51
|
| L3 design or closure review | Append a `REVIEW_LOG.md` row with findings, tier, reviewer and verdict before claiming the gate passed. |
|
|
48
|
-
| Concurrent work | Write `audit/HANDOFF_[course].md` with resume logistics; `audit/handoff.md` is the generated workstream registry rebuilt by `index`. |
|
|
52
|
+
| Concurrent work | Write `audit/HANDOFF_[course].md` with resume logistics; `audit/handoff.md` is the generated workstream registry rebuilt by `index`. Its `next:` is the next concrete step in one sentence; what happened, and the state of the work, go to the Diary as a dated entry. |
|
|
49
53
|
| A repeatable lesson from source or work | PROPOSE distilling a guide with provenance under `reference/`; Propose proactively when the knowledge would otherwise be lost. |
|
|
50
54
|
|
|
51
55
|
An operative guide is not a dumping ground. Follow `guides.md`: source provenance and section-level fidelity make a guide useful in a later session.
|
|
@@ -58,7 +62,7 @@ Read `ai_docs/README.md`, `ai_docs/INDEX.md`, and `ai_docs/reference/INDEX.md` (
|
|
|
58
62
|
|
|
59
63
|
### 2. Vision Gate
|
|
60
64
|
|
|
61
|
-
Draft the course Vision with benefit, named learner groups, what they should be able to understand and do, and signals that would count as useful learning. Read `vision.md`, run its blind check, and obtain the person's approval before writing the course design. Project Vision remains above the course Vision. A course may be delivered before human evaluation, visibly labeled **efficacy not verified**.
|
|
65
|
+
Draft from the request as recorded in `audit/requests/REQUEST_course_<slug>.md`, not from a paraphrase of it. Run the owner interview in `vision.md` §The owner interview first and obtain the north star in the person's words before drafting. Then draft the course Vision from the answers, with benefit, named learner groups, what they should be able to understand and do, and signals that would count as useful learning. Read `vision.md`, run its blind check, and obtain the person's approval before writing the course design. Project Vision remains above the course Vision. A course may be delivered before human evaluation, visibly labeled **efficacy not verified**.
|
|
62
66
|
|
|
63
67
|
### 3. Course Design
|
|
64
68
|
|
|
@@ -88,7 +92,7 @@ Run `python <skill_dir>/scripts/sdlc_check.py course <slug> --root <project_root
|
|
|
88
92
|
|
|
89
93
|
Read `feedback.md` when real learner feedback or observed use arrives. A single reproducible defect may justify correcting the course or proposing a skill guide or change. It does not prove effectiveness. Human effectiveness needs comparable learners, observable criteria, results including contrary cases and stated limits; a formal pilot is optional. Keep **efficacy not verified** until that evidence supports a different claim.
|
|
90
94
|
|
|
91
|
-
Run `sdlc_check.py index` then `sdlc_check.py check`; include course material, Vision, ANALYSIS and documentation in the same change. Close with an independent diff review against the approved design, tests, and a truthful efficacy label. Isolate the work on its own branch/worktree for L3. Branch/worktree hygiene follows the project owner’s integration choice; do not discard unmerged work without authorization.
|
|
95
|
+
Run `sdlc_check.py index` then `sdlc_check.py check`; include course material, Vision, ANALYSIS and documentation in the same change. Close with an independent diff review against the approved design, tests, and a truthful efficacy label. Isolate the work on its own branch/worktree for L3. A session that may run while another session uses the same checkout works in its **own git worktree**, and never switches branch, stashes, resets or runs `index` in a checkout another session may be using. Parallel work also shares ids: choose a new unit's id **after fetching**, as the first id free on every branch and tag the checkout can see (`check` names a collision while the unit is open). Branch/worktree hygiene follows the project owner’s integration choice; do not discard unmerged work without authorization.
|
|
92
96
|
|
|
93
97
|
## Operative Guides and memory
|
|
94
98
|
|
|
@@ -99,8 +99,8 @@ Exactly three review touches per task, never a loop:
|
|
|
99
99
|
|
|
100
100
|
1. Inline self-review by the implementer subagent before it reports done
|
|
101
101
|
(the standard critical-review pass, not a separate call).
|
|
102
|
-
2. One reviewer pass per task
|
|
103
|
-
|
|
102
|
+
2. One reviewer pass per task, under the `review.md` discipline in both modes
|
|
103
|
+
(Hybrid: against the accepted E-TDD).
|
|
104
104
|
3. One broad final pass over the whole plan at closure, after all tasks are
|
|
105
105
|
DONE — catches cross-task drift a per-task review cannot see.
|
|
106
106
|
|
|
@@ -135,6 +135,6 @@ have added.
|
|
|
135
135
|
## Hybrid note
|
|
136
136
|
|
|
137
137
|
The plan's `derived-from` points at the accepted E-TDD document key. Per-task
|
|
138
|
-
review
|
|
139
|
-
|
|
140
|
-
both modes share.
|
|
138
|
+
review is the closure review of `review.md` against that E-TDD, run by the
|
|
139
|
+
client's agent (devPNT doctrine §4.6 invokes the same review) — `review.md` is
|
|
140
|
+
the single definition both modes share.
|