@aethrekh/pi-cs 0.1.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/LICENSE +21 -0
  3. package/README.md +250 -0
  4. package/config/defaults.json +25 -0
  5. package/config/schema.json +134 -0
  6. package/extensions/folder-detector.d.ts +34 -0
  7. package/extensions/folder-detector.d.ts.map +1 -0
  8. package/extensions/folder-detector.js +197 -0
  9. package/extensions/folder-detector.js.map +1 -0
  10. package/extensions/index.d.ts +12 -0
  11. package/extensions/index.d.ts.map +1 -0
  12. package/extensions/index.js +227 -0
  13. package/extensions/index.js.map +1 -0
  14. package/extensions/integrity-guard.d.ts +25 -0
  15. package/extensions/integrity-guard.d.ts.map +1 -0
  16. package/extensions/integrity-guard.js +118 -0
  17. package/extensions/integrity-guard.js.map +1 -0
  18. package/extensions/progress-tracker.d.ts +33 -0
  19. package/extensions/progress-tracker.d.ts.map +1 -0
  20. package/extensions/progress-tracker.js +175 -0
  21. package/extensions/progress-tracker.js.map +1 -0
  22. package/extensions/semester-detector.d.ts +53 -0
  23. package/extensions/semester-detector.d.ts.map +1 -0
  24. package/extensions/semester-detector.js +197 -0
  25. package/extensions/semester-detector.js.map +1 -0
  26. package/index.d.ts +146 -0
  27. package/index.js +381 -0
  28. package/index.js.map +1 -0
  29. package/package.json +33 -0
  30. package/pi-cs.meta.json +7 -0
  31. package/pi-package.yaml +76 -0
  32. package/skills/exam/SKILL.md +186 -0
  33. package/skills/explain/SKILL.md +124 -0
  34. package/skills/homework/SKILL.md +89 -0
  35. package/skills/leetcode/SKILL.md +139 -0
  36. package/skills/project/SKILL.md +143 -0
  37. package/skills/research/SKILL.md +164 -0
  38. package/skills/review/SKILL.md +136 -0
  39. package/system.md +98 -0
  40. package/templates/project-init.md +141 -0
  41. package/templates/research-paper.md +134 -0
  42. package/templates/semester-init.md +49 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,40 @@
1
+ # Changelog
2
+
3
+ All notable changes to pi-cs (Pisces) will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ---
9
+
10
+ ## [Unreleased]
11
+
12
+ ### Planned
13
+ - arXiv integration for `/research` skill
14
+ - Model routing presets (local + cloud fallback)
15
+ - Obsidian vault integration
16
+ - `/debug` skill for interactive debugging sessions
17
+ - VS Code extension companion
18
+
19
+ ---
20
+
21
+ ## [0.1.0] — Unreleased (MVP)
22
+
23
+ ### Added
24
+ - Core `system.md` — Pisces academic persona
25
+ - `/homework` skill — Socratic guided learning with integrity guard
26
+ - `/project` skill — Full project kickoff with scaffolding
27
+ - `/review` skill — TA-level code review with severity tiers
28
+ - `/explain` skill — Feynman-style explanations with Mermaid diagrams
29
+ - `/leetcode` skill — Optimized solutions with complexity analysis
30
+ - `/exam` skill — Quiz, mind map, revision plan, and flashcard modes
31
+ - `/research` skill — Paper summarization and literature review
32
+ - `semester-detector` extension — Auto-loads `SEMESTER.md` context
33
+ - `folder-detector` extension — Detects CS university folder structures
34
+ - `integrity-guard` extension — Monitors for academic integrity risks
35
+ - `progress-tracker` extension — Weekly stats and burnout nudges
36
+ - `SEMESTER.md` template for semester initialization
37
+ - Configuration schema with sensible defaults
38
+ - Full TypeScript source with strict mode
39
+ - Jest test suite for all extensions
40
+ - GitHub Actions CI workflow
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ashish Bagdane
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,250 @@
1
+ # 🐠 pi-cs (Pisces)
2
+ ### The CS Student Edition for Pi Coding Agent
3
+
4
+ > *Your intelligent, adaptive AI co-pilot that swims deep into every aspect of your Computer Science degree.*
5
+
6
+ **"Your Personal AI Teaching Assistant for Computer Science — From Homework to Thesis"**
7
+
8
+ ---
9
+
10
+ ## What is Pisces?
11
+
12
+ Pisces is a [Pi Coding Agent](https://github.com/pi-agent/pi) package that transforms Pi into a deeply integrated **academic co-pilot** — the equivalent of a senior TA living inside your terminal.
13
+
14
+ It covers every dimension of a CS degree:
15
+
16
+ | Need | Command | What it does |
17
+ |---|---|---|
18
+ | Stuck on an assignment | `/homework` | Hints, pseudocode, guided walkthrough — no cheating |
19
+ | Starting a new project | `/project` | Requirements → architecture → scaffolded codebase |
20
+ | Code review before submitting | `/review` | Strict TA-level review with severity tiers |
21
+ | Don't understand a concept | `/explain` | Feynman-style: analogy + diagram + code example |
22
+ | Interview/LeetCode prep | `/leetcode` | Optimized solutions with complexity proofs |
23
+ | Exam in 3 days | `/exam` | Quiz mode, mind maps, and revision plans |
24
+ | Research paper / thesis | `/research` | Paper summaries, literature surveys, citations |
25
+
26
+ ---
27
+
28
+ ## Quick Start
29
+
30
+ ```bash
31
+ # Install pi-cs
32
+ pi install npm:pi-cs
33
+
34
+ # Navigate to your university folder
35
+ cd ~/university/fall2025
36
+
37
+ # Initialize your semester context
38
+ /semester-init
39
+
40
+ # Start working
41
+ /homework
42
+ /explain binary search trees
43
+ /leetcode 42
44
+ ```
45
+
46
+ ---
47
+
48
+ ## Semester Context
49
+
50
+ Pisces becomes dramatically more useful when it knows your academic context. Create a `SEMESTER.md` in your university root:
51
+
52
+ ```markdown
53
+ semester: Fall 2025
54
+ year: 2025
55
+ week: 7
56
+ year_of_study: 2
57
+
58
+ ## Courses
59
+ - CS301: Operating Systems
60
+ - CS315: Database Systems
61
+ - CS320: Software Engineering
62
+
63
+ active_project: shell-implementation
64
+ ```
65
+
66
+ Pisces auto-detects this file at startup and greets you with relevant context:
67
+
68
+ > *"Hey! I see you're in Week 7 of Fall 2025. You have 3 active courses. What are we working on today?"*
69
+
70
+ ---
71
+
72
+ ## Skills Reference
73
+
74
+ ### `/homework`
75
+ Guided learning mode. Pisces uses the Socratic method — hints, pseudocode, and guided questions. **Never produces complete submittable solutions for graded work.**
76
+
77
+ ```
78
+ /homework
79
+ > Here's my problem: implement Dijkstra's algorithm...
80
+ > I've tried a basic BFS but it doesn't handle weights
81
+ ```
82
+
83
+ ### `/project`
84
+ Full project kickoff. Requirements analysis, architecture proposal, tech stack recommendation, and scaffolded boilerplate.
85
+
86
+ ```
87
+ /project
88
+ > Build a REST API for a student grade tracker
89
+ > Tech stack: open to suggestions
90
+ > Deadline: 3 weeks
91
+ ```
92
+
93
+ ### `/review`
94
+ TA-level code review. Covers correctness, efficiency, style, robustness, and tests. Every issue is rated (🔴 Critical / 🟠 Major / 🟡 Minor / 🔵 Suggestion).
95
+
96
+ ```
97
+ /review --mode=deep
98
+ [paste your code]
99
+ ```
100
+
101
+ ### `/explain`
102
+ Feynman-style explanations with real-world analogies, Mermaid diagrams, and connections to your prior knowledge.
103
+
104
+ ```
105
+ /explain virtual memory
106
+ /explain the CAP theorem --depth=advanced
107
+ /explain recursion --style=analogy
108
+ ```
109
+
110
+ ### `/leetcode`
111
+ Structured problem solving for interview prep. Full solutions with brute force → optimal progression, complexity proofs, and test cases.
112
+
113
+ ```
114
+ /leetcode 42
115
+ /leetcode trapping rain water --lang=python
116
+ /leetcode --mode=interview # simulates a real interview
117
+ ```
118
+
119
+ ### `/exam`
120
+ Exam preparation toolkit. Interactive quizzes, concept mind maps, day-by-day revision plans, and Anki-compatible flashcards.
121
+
122
+ ```
123
+ /exam CS301 --mode=quiz
124
+ /exam operating systems --mode=mindmap
125
+ /exam --mode=plan # builds schedule based on your exam date
126
+ ```
127
+
128
+ ### `/research`
129
+ Academic research assistant. Paper summaries, literature surveys, citation generation, and literature review writing.
130
+
131
+ ```
132
+ /research "Attention is All You Need"
133
+ /research attention mechanisms --mode=survey
134
+ /research --mode=cite arxiv:1706.03762 --format=bibtex
135
+ ```
136
+
137
+ ---
138
+
139
+ ## Academic Integrity
140
+
141
+ Pisces has academic integrity built in at every level:
142
+
143
+ - ✅ Always provides hints, explanations, and pseudocode
144
+ - ✅ Helps you debug **your own** code
145
+ - ✅ Writes complete code for personal projects, `/leetcode`, and `/project`
146
+ - ❌ Never writes complete solutions for graded assignments
147
+ - ❌ Never submits or helps disguise AI-generated work as your own
148
+
149
+ When Pisces detects a potential integrity issue, it redirects to guided learning mode and asks for clarification.
150
+
151
+ ---
152
+
153
+ ## Configuration
154
+
155
+ Customize Pisces behavior in your Pi config:
156
+
157
+ ```yaml
158
+ # ~/.pi/config.yaml (pi-cs section)
159
+ pi-cs:
160
+ student:
161
+ name: Alex
162
+ year_of_study: 2
163
+ primary_language: python
164
+ explanations:
165
+ default_depth: intermediate
166
+ prefer_visuals: true
167
+ productivity:
168
+ burnout_nudges: true
169
+ session_warning_minutes: 180
170
+ ```
171
+
172
+ See [`config/schema.json`](config/schema.json) for the full configuration reference.
173
+
174
+ ---
175
+
176
+ ## Installation
177
+
178
+ **Requirements:** Pi >= 1.0.0, Node.js >= 18
179
+
180
+ ```bash
181
+ pi install npm:pi-cs
182
+ ```
183
+
184
+ That's it. Pisces activates automatically in every Pi session.
185
+
186
+ ---
187
+
188
+ ## Project Structure
189
+
190
+ ```
191
+ pi-cs/
192
+ ├── SYSTEM.md # Core academic persona (Pi system prompt)
193
+ ├── pi-package.yaml # Package manifest
194
+ ├── src/
195
+ │ ├── skills/
196
+ │ │ ├── homework/SKILL.md # /homework skill
197
+ │ │ ├── project/SKILL.md # /project skill
198
+ │ │ ├── review/SKILL.md # /review skill
199
+ │ │ ├── explain/SKILL.md # /explain skill
200
+ │ │ ├── leetcode/SKILL.md # /leetcode skill
201
+ │ │ ├── exam/SKILL.md # /exam skill
202
+ │ │ └── research/SKILL.md # /research skill
203
+ │ ├── extensions/
204
+ │ │ ├── semester-detector.ts # Auto-loads SEMESTER.md
205
+ │ │ ├── folder-detector.ts # Detects CS folder structures
206
+ │ │ ├── integrity-guard.ts # Academic integrity monitoring
207
+ │ │ └── progress-tracker.ts # Weekly stats & burnout nudges
208
+ │ └── templates/
209
+ │ ├── semester-init.md # SEMESTER.md template
210
+ │ ├── project-init.md # CS project bootstrap template
211
+ │ └── research-paper.md # Academic paper structure template
212
+ ├── config/
213
+ │ ├── schema.json # Config schema
214
+ │ └── defaults.json # Default values
215
+ └── tests/
216
+ ├── index.test.ts # Lifecycle hooks & config tests
217
+ └── extensions/ # Per-extension unit tests
218
+ ```
219
+
220
+ ---
221
+
222
+ ## Roadmap
223
+
224
+ - [x] 7 core skills
225
+ - [x] 4 background extensions
226
+ - [x] Semester context system
227
+ - [x] Academic integrity guard
228
+ - [ ] arXiv live search integration
229
+ - [ ] Model routing presets
230
+ - [ ] Obsidian vault sync
231
+ - [ ] `/debug` interactive debugging skill
232
+ - [ ] VS Code companion extension
233
+
234
+ ---
235
+
236
+ ## Contributing
237
+
238
+ Issues and PRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).
239
+
240
+ For bugs, use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.yml).
241
+
242
+ ---
243
+
244
+ ## License
245
+
246
+ MIT — see [LICENSE](LICENSE)
247
+
248
+ ---
249
+
250
+ *Made for CS students, by CS students. 🐠*
@@ -0,0 +1,25 @@
1
+ {
2
+ "student": {
3
+ "year_of_study": 2,
4
+ "primary_language": "python"
5
+ },
6
+ "explanations": {
7
+ "default_depth": "intermediate",
8
+ "prefer_visuals": true,
9
+ "use_analogies": true
10
+ },
11
+ "code": {
12
+ "style": "balanced",
13
+ "always_include_complexity": true,
14
+ "always_include_tests": false
15
+ },
16
+ "integrity": {
17
+ "enabled": true,
18
+ "strictness": "balanced"
19
+ },
20
+ "productivity": {
21
+ "burnout_nudges": true,
22
+ "session_warning_minutes": 180,
23
+ "weekly_summary": true
24
+ }
25
+ }
@@ -0,0 +1,134 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "pi-cs Configuration",
4
+ "description": "User configuration for the pi-cs (Pisces) package",
5
+ "type": "object",
6
+ "properties": {
7
+ "student": {
8
+ "type": "object",
9
+ "description": "Student profile settings",
10
+ "properties": {
11
+ "name": {
12
+ "type": "string",
13
+ "description": "Your first name (used for personalized greetings)"
14
+ },
15
+ "year_of_study": {
16
+ "type": "integer",
17
+ "minimum": 1,
18
+ "maximum": 6,
19
+ "description": "Current year of study (1=freshman, 4=senior, 5-6=graduate)"
20
+ },
21
+ "primary_language": {
22
+ "type": "string",
23
+ "enum": ["python", "typescript", "javascript", "java", "cpp", "c", "rust", "go", "haskell", "other"],
24
+ "description": "Your preferred/primary programming language"
25
+ },
26
+ "timezone": {
27
+ "type": "string",
28
+ "description": "Your timezone (e.g. America/New_York) for deadline awareness"
29
+ }
30
+ }
31
+ },
32
+ "explanations": {
33
+ "type": "object",
34
+ "description": "Settings for the /explain skill",
35
+ "properties": {
36
+ "default_depth": {
37
+ "type": "string",
38
+ "enum": ["beginner", "intermediate", "advanced"],
39
+ "default": "intermediate",
40
+ "description": "Default explanation depth when not specified"
41
+ },
42
+ "prefer_visuals": {
43
+ "type": "boolean",
44
+ "default": true,
45
+ "description": "Prefer Mermaid diagrams when explaining structural concepts"
46
+ },
47
+ "use_analogies": {
48
+ "type": "boolean",
49
+ "default": true,
50
+ "description": "Include real-world analogies in explanations"
51
+ }
52
+ }
53
+ },
54
+ "code": {
55
+ "type": "object",
56
+ "description": "Code generation preferences",
57
+ "properties": {
58
+ "style": {
59
+ "type": "string",
60
+ "enum": ["verbose", "balanced", "concise"],
61
+ "default": "balanced",
62
+ "description": "How much inline commenting to include in generated code"
63
+ },
64
+ "always_include_complexity": {
65
+ "type": "boolean",
66
+ "default": true,
67
+ "description": "Always annotate algorithm time/space complexity"
68
+ },
69
+ "always_include_tests": {
70
+ "type": "boolean",
71
+ "default": false,
72
+ "description": "Always suggest test cases alongside solutions"
73
+ }
74
+ }
75
+ },
76
+ "integrity": {
77
+ "type": "object",
78
+ "description": "Academic integrity guard settings",
79
+ "properties": {
80
+ "enabled": {
81
+ "type": "boolean",
82
+ "default": true,
83
+ "description": "Enable the academic integrity guard (strongly recommended)"
84
+ },
85
+ "strictness": {
86
+ "type": "string",
87
+ "enum": ["strict", "balanced", "relaxed"],
88
+ "default": "balanced",
89
+ "description": "How aggressively to flag potential integrity issues"
90
+ }
91
+ }
92
+ },
93
+ "productivity": {
94
+ "type": "object",
95
+ "description": "Productivity and wellbeing settings",
96
+ "properties": {
97
+ "burnout_nudges": {
98
+ "type": "boolean",
99
+ "default": true,
100
+ "description": "Enable rest/break reminders during long sessions"
101
+ },
102
+ "session_warning_minutes": {
103
+ "type": "integer",
104
+ "default": 180,
105
+ "minimum": 30,
106
+ "description": "Show a break reminder after this many minutes in a session"
107
+ },
108
+ "weekly_summary": {
109
+ "type": "boolean",
110
+ "default": true,
111
+ "description": "Show a weekly progress summary at session end"
112
+ }
113
+ }
114
+ },
115
+ "model": {
116
+ "type": "object",
117
+ "description": "Model routing preferences",
118
+ "properties": {
119
+ "default": {
120
+ "type": "string",
121
+ "description": "Default model for general questions"
122
+ },
123
+ "code_heavy": {
124
+ "type": "string",
125
+ "description": "Model to use for code generation and review tasks"
126
+ },
127
+ "quick": {
128
+ "type": "string",
129
+ "description": "Lightweight model for fast, simple queries"
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * folder-detector.ts
3
+ *
4
+ * Extension: Folder Detector
5
+ * Triggers: on_startup, on_directory_change
6
+ *
7
+ * Detects standard CS university folder structures and injects
8
+ * project context into the Pi session accordingly.
9
+ */
10
+ export type ProjectType = "python" | "typescript" | "java" | "cpp" | "rust" | "go" | "web" | "monorepo" | "unknown";
11
+ export interface ProjectContext {
12
+ type: ProjectType;
13
+ root: string;
14
+ name: string;
15
+ hasTests: boolean;
16
+ hasCi: boolean;
17
+ hasDocker: boolean;
18
+ hasReadme: boolean;
19
+ entrypoint?: string;
20
+ testCommand?: string;
21
+ buildCommand?: string;
22
+ }
23
+ export interface FolderDetectionResult {
24
+ isUniversityWorkspace: boolean;
25
+ semesterFolder?: string;
26
+ courseFolder?: string;
27
+ project?: ProjectContext;
28
+ }
29
+ export declare function detectFolderContext(): FolderDetectionResult;
30
+ export declare function summarizeFolderContext(result: FolderDetectionResult): string;
31
+ export declare function run(): {
32
+ inject: string;
33
+ };
34
+ //# sourceMappingURL=folder-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-detector.d.ts","sourceRoot":"","sources":["../../src/extensions/folder-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,KAAK,GACL,MAAM,GACN,IAAI,GACJ,KAAK,GACL,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AA+FD,wBAAgB,mBAAmB,IAAI,qBAAqB,CAmC3D;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAmB5E;AAID,wBAAgB,GAAG,IAAI;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CASxC"}