@antoneeo/course-creator 0.1.0-beta.1
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 +15 -0
- package/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +25 -0
- package/gemini-extension.json +6 -0
- package/package.json +52 -0
- package/scripts/init.js +62 -0
- package/scripts/lib.js +734 -0
- package/scripts/postinstall.js +16 -0
- package/scripts/preuninstall.js +12 -0
- package/skills/course-creator/ENFORCEMENT.md +272 -0
- package/skills/course-creator/LICENSE +202 -0
- package/skills/course-creator/NOTICE +5 -0
- package/skills/course-creator/SKILL.md +95 -0
- package/skills/course-creator/dispatch.md +140 -0
- package/skills/course-creator/elicitation.md +196 -0
- package/skills/course-creator/feedback.md +7 -0
- package/skills/course-creator/guides.md +291 -0
- package/skills/course-creator/learning_design.md +79 -0
- package/skills/course-creator/memory.md +88 -0
- package/skills/course-creator/review.md +450 -0
- package/skills/course-creator/routing.md +118 -0
- package/skills/course-creator/scripts/course_check.py +479 -0
- package/skills/course-creator/scripts/entry_point.py +25 -0
- package/skills/course-creator/scripts/knowledge.py +2089 -0
- package/skills/course-creator/scripts/sdlc_check.py +73 -0
- package/skills/course-creator/scripts/sdlc_core.py +2707 -0
- package/skills/course-creator/scripts/shared_files.py +215 -0
- package/skills/course-creator/scripts/shared_manifest.json +27 -0
- package/skills/course-creator/simulation.md +47 -0
- package/skills/course-creator/slide_content.md +78 -0
- package/skills/course-creator/source_check.md +28 -0
- package/skills/course-creator/templates.md +222 -0
- package/skills/course-creator/vision.md +245 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Course lens entry point: shared SDLC and memory, plus course structure."""
|
|
3
|
+
import argparse
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
8
|
+
import sdlc_core
|
|
9
|
+
import knowledge
|
|
10
|
+
import course_check
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
sdlc_core.set_entry_point("course", provides=("code", "knowledge", "course"),
|
|
14
|
+
script="sdlc_check.py")
|
|
15
|
+
sdlc_core.set_profile(
|
|
16
|
+
skill_name="course-creator", unit_noun="course",
|
|
17
|
+
support_files=("slide_content.md", "templates.md", "learning_design.md", "source_check.md",
|
|
18
|
+
"simulation.md", "feedback.md", "elicitation.md", "ENFORCEMENT.md",
|
|
19
|
+
"memory.md", "review.md", "routing.md", "vision.md", "guides.md",
|
|
20
|
+
"dispatch.md"),
|
|
21
|
+
capabilities=("triage", "write_triggers", "workstream_registry", "vision_gate",
|
|
22
|
+
"design_review_gate", "guide_router", "worktree_hygiene",
|
|
23
|
+
"question_discipline"),
|
|
24
|
+
design_gate_between=("### 3. Course Design", "### 4. Production and Testing"),
|
|
25
|
+
remind_line=("load course-creator when the deliverable teaches; declare triage and "
|
|
26
|
+
"guide-router verdict. Define the learner profile and prerequisites before "
|
|
27
|
+
"writing explanations. Reopen sources for factual claims. A simulator is "
|
|
28
|
+
"diagnostic; real learning remains unverified until supported by feedback."),
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _report(findings, strict=False):
|
|
33
|
+
for finding in findings:
|
|
34
|
+
print(f"[{finding.severity}] {finding.file} [{finding.item}]: {finding.reason}")
|
|
35
|
+
errors = sum(f.severity == "ERROR" for f in findings)
|
|
36
|
+
warnings = sum(f.severity == "WARN" for f in findings)
|
|
37
|
+
print(f"course: {errors} error(s), {warnings} warning(s)")
|
|
38
|
+
return 1 if errors or (strict and warnings) else 0
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def main(argv=None):
|
|
42
|
+
argv = list(sys.argv[1:] if argv is None else argv)
|
|
43
|
+
if argv and argv[0] == "course":
|
|
44
|
+
parser = argparse.ArgumentParser(prog="sdlc_check.py course")
|
|
45
|
+
parser.add_argument("command", choices=("course",))
|
|
46
|
+
parser.add_argument("slug")
|
|
47
|
+
parser.add_argument("--root")
|
|
48
|
+
parser.add_argument("--strict", action="store_true")
|
|
49
|
+
args = parser.parse_args(argv)
|
|
50
|
+
root = Path(args.root).resolve() if args.root else sdlc_core.find_project_root()
|
|
51
|
+
if root is None:
|
|
52
|
+
print("[ERROR] no project root found")
|
|
53
|
+
return 2
|
|
54
|
+
return _report(course_check.validate_course(
|
|
55
|
+
root, root / "ai_docs/solutions/courses" / args.slug), strict=args.strict)
|
|
56
|
+
if not argv or argv[0] not in ("validate", "check"):
|
|
57
|
+
return knowledge.main(argv)
|
|
58
|
+
parser = argparse.ArgumentParser(add_help=False)
|
|
59
|
+
parser.add_argument("command")
|
|
60
|
+
parser.add_argument("--root")
|
|
61
|
+
parser.add_argument("--strict", action="store_true")
|
|
62
|
+
args, _ = parser.parse_known_args(argv)
|
|
63
|
+
rc = knowledge.main(argv)
|
|
64
|
+
if sdlc_core.docs_dir() != "ai_docs":
|
|
65
|
+
return rc
|
|
66
|
+
root = Path(args.root).resolve() if args.root else sdlc_core.find_project_root()
|
|
67
|
+
if root is None:
|
|
68
|
+
return rc
|
|
69
|
+
return max(rc, _report(course_check.validate_all(root), strict=args.strict))
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
if __name__ == "__main__":
|
|
73
|
+
sys.exit(main())
|