palskills 1.0.4 → 1.0.5

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 (3) hide show
  1. package/README.md +9 -7
  2. package/bin/palskills.js +336 -152
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -48,17 +48,19 @@ palskills
48
48
  ║ AI Development Pipeline ║
49
49
  ╚══════════════════════════════════════╝
50
50
 
51
- Select coding agent:
51
+ What do you want to do?
52
52
 
53
- [1] Codex CLI → .codex.md
54
- [2] Cursor → .cursorrules
55
- [3] Claude Code CLAUDE.md
56
- [4] All generate all
53
+ [1] Learn Project bootstrap .palbox/ (Lyleen)
54
+ [2] Codex CLI → .codex.md
55
+ [3] Cursor → .cursorrules
56
+ [4] Claude Code CLAUDE.md
57
+ [5] All Agents → generate all configs
57
58
 
58
- Choose [1-4]:
59
+ Choose [1-5]:
59
60
  ```
60
61
 
61
- Select an agent to instantly generate its config file with SOLID + SRP rules + palbox knowledge graph conventions.
62
+ **Step 1:** Pick `[1]` to analyze the project and create a `.palbox/` knowledge graph.
63
+ **Step 2:** Pick `[2-5]` to generate agent configs with SOLID + SRP + palbox conventions.
62
64
 
63
65
  ### One-shot (without installing)
64
66
  ```bash
package/bin/palskills.js CHANGED
@@ -29,22 +29,30 @@ async function main() {
29
29
  box('PALSKILLS\nAI Development Pipeline');
30
30
 
31
31
  console.log('');
32
- console.log(` ${BOLD}Select coding agent:${NC}`);
32
+ console.log(` ${BOLD}What do you want to do?${NC}`);
33
33
  console.log('');
34
- console.log(` ${MAGENTA}[1]${NC} Codex CLI → .codex.md`);
35
- console.log(` ${MAGENTA}[2]${NC} Cursor → .cursorrules`);
36
- console.log(` ${MAGENTA}[3]${NC} Claude Code CLAUDE.md`);
37
- console.log(` ${MAGENTA}[4]${NC} All generate all`);
34
+ console.log(` ${MAGENTA}[1]${NC} Learn Project bootstrap .palbox/ (Lyleen)`);
35
+ console.log(` ${MAGENTA}[2]${NC} Codex CLI → .codex.md`);
36
+ console.log(` ${MAGENTA}[3]${NC} Cursor → .cursorrules`);
37
+ console.log(` ${MAGENTA}[4]${NC} Claude Code CLAUDE.md`);
38
+ console.log(` ${MAGENTA}[5]${NC} All Agents → generate all configs`);
38
39
  console.log('');
39
40
 
40
- const choice = await ask(` Choose [1-4]: `);
41
+ const choice = await ask(` Choose [1-5]: `);
41
42
  console.log('');
42
43
 
44
+ if (choice === '1') {
45
+ bootstrapPalbox();
46
+ installSkills();
47
+ console.log(`\n ${GREEN}✅ Done!${NC} .palbox/ created. Run again to generate agent configs.\n`);
48
+ process.exit(0);
49
+ }
50
+
43
51
  const agents = [];
44
- if (choice === '1') agents.push('codex');
45
- else if (choice === '2') agents.push('cursor');
46
- else if (choice === '3') agents.push('claude');
47
- else if (choice === '4') agents.push('codex', 'cursor', 'claude');
52
+ if (choice === '2') agents.push('codex');
53
+ else if (choice === '3') agents.push('cursor');
54
+ else if (choice === '4') agents.push('claude');
55
+ else if (choice === '5') agents.push('codex', 'cursor', 'claude');
48
56
  else { console.log(' Invalid choice. Exiting.'); process.exit(1); }
49
57
 
50
58
  for (const agent of agents) {
@@ -57,6 +65,178 @@ async function main() {
57
65
  console.log(`\n ${GREEN}✅ Done!${NC} Restart Hermes Agent to load skills.\n`);
58
66
  }
59
67
 
68
+ function bootstrapPalbox() {
69
+ const cwd = process.cwd();
70
+ const palbox = path.join(cwd, '.palbox');
71
+
72
+ if (fs.existsSync(palbox)) {
73
+ console.log(` ${YELLOW}⚠${NC} .palbox/ already exists. Skipping bootstrap.\n`);
74
+ console.log(' To re-analyze, delete .palbox/ and run again.\n');
75
+ return;
76
+ }
77
+
78
+ console.log(` ${CYAN}🔍 Analyzing project...${NC}\n`);
79
+
80
+ // Detect tech stack
81
+ const files = fs.readdirSync(cwd);
82
+ const hasFile = name => files.includes(name);
83
+ let language = 'Unknown';
84
+ let framework = '';
85
+ let pkgManager = '';
86
+
87
+ if (hasFile('package.json')) {
88
+ const pkg = JSON.parse(fs.readFileSync(path.join(cwd, 'package.json'), 'utf8'));
89
+ language = 'TypeScript/JavaScript';
90
+ framework = pkg.dependencies?.next ? 'Next.js' :
91
+ pkg.dependencies?.react ? 'React' :
92
+ pkg.dependencies?.express ? 'Express' :
93
+ pkg.dependencies?.fastify ? 'Fastify' : 'Node.js';
94
+ pkgManager = hasFile('pnpm-lock.yaml') ? 'pnpm' :
95
+ hasFile('yarn.lock') ? 'yarn' : 'npm';
96
+ } else if (hasFile('requirements.txt') || hasFile('pyproject.toml')) {
97
+ language = 'Python';
98
+ framework = hasFile('pyproject.toml') ? 'Poetry' : 'pip';
99
+ if (fs.existsSync(path.join(cwd, 'pyproject.toml'))) {
100
+ try {
101
+ const toml = fs.readFileSync(path.join(cwd, 'pyproject.toml'), 'utf8');
102
+ if (toml.includes('fastapi')) framework = 'FastAPI';
103
+ else if (toml.includes('django')) framework = 'Django';
104
+ else if (toml.includes('flask')) framework = 'Flask';
105
+ } catch {}
106
+ }
107
+ } else if (hasFile('go.mod')) {
108
+ language = 'Go';
109
+ framework = 'Go modules';
110
+ } else if (hasFile('Cargo.toml')) {
111
+ language = 'Rust';
112
+ framework = 'Cargo';
113
+ }
114
+
115
+ // Detect project name
116
+ let projectName = path.basename(cwd);
117
+ if (hasFile('package.json')) {
118
+ try {
119
+ const pkg = JSON.parse(fs.readFileSync(path.join(cwd, 'package.json'), 'utf8'));
120
+ if (pkg.name) projectName = pkg.name;
121
+ } catch {}
122
+ }
123
+
124
+ // Get git info
125
+ let gitContributors = '';
126
+ try {
127
+ const { execSync } = require('child_process');
128
+ gitContributors = execSync('git log --format="%an" | sort | uniq -c | sort -rn | head -3', { cwd, encoding: 'utf8' }).trim();
129
+ } catch {}
130
+
131
+ // Create palbox structure
132
+ fs.mkdirSync(path.join(palbox, 'flows'), { recursive: true });
133
+ fs.mkdirSync(path.join(palbox, 'history'), { recursive: true });
134
+ fs.mkdirSync(path.join(palbox, 'plans'), { recursive: true });
135
+
136
+ const date = new Date().toISOString().split('T')[0];
137
+
138
+ // README.md
139
+ fs.writeFileSync(path.join(palbox, 'README.md'), `# ${projectName}
140
+
141
+ **Generated:** ${date}
142
+ **Bootstrapped by:** Lyleen (Palskills)
143
+
144
+ ## Overview
145
+ [Project description — update this]
146
+
147
+ ## Tech Stack
148
+ - **Language:** ${language}
149
+ - **Framework:** ${framework}${pkgManager ? `\n- **Package Manager:** ${pkgManager}` : ''}
150
+
151
+ ## Project Goal
152
+ [What problem does this project solve? — update this]
153
+
154
+ ## Quick Start
155
+ [How to run the project — update this]
156
+
157
+ ## Knowledge Graph
158
+ - [[architecture]] — folder structure and design patterns
159
+ - [[methods]] — coding conventions and standards
160
+ - [[flows/]] — feature workflow documentation
161
+ - [[history/]] — past development sessions
162
+ `);
163
+
164
+ // architecture.md
165
+ let dirTree = '';
166
+ try {
167
+ const result = fs.readdirSync(cwd, { withFileTypes: true })
168
+ .filter(d => d.isDirectory() && !d.name.startsWith('.') && d.name !== 'node_modules' && d.name !== '__pycache__')
169
+ .map(d => `├── ${d.name}/`)
170
+ .join('\n');
171
+ dirTree = result || '(empty)';
172
+ } catch { dirTree = '(unknown)'; }
173
+
174
+ fs.writeFileSync(path.join(palbox, 'architecture.md'), `# Architecture
175
+
176
+ **Last Updated:** ${date}
177
+
178
+ ## Folder Structure
179
+ \`\`\`
180
+ ${projectName}/
181
+ ${dirTree}
182
+ \`\`\`
183
+
184
+ ## Design Patterns
185
+ [Detected patterns — update this]
186
+
187
+ ## Key Modules
188
+ | Module | Responsibility | Key Files |
189
+ |--------|---------------|-----------|
190
+ | ... | ... | ... |
191
+
192
+ ## Data Flow
193
+ [How data moves through the system]
194
+
195
+ ## Related
196
+ - [[methods]] — how we build
197
+ - [[README]] — project overview
198
+ `);
199
+
200
+ // methods.md
201
+ fs.writeFileSync(path.join(palbox, 'methods.md'), `# Development Methods
202
+
203
+ **Last Updated:** ${date}
204
+
205
+ ## Coding Conventions
206
+ [Detected from codebase — update this]
207
+
208
+ ## Testing Strategy
209
+ [Detected from test files — update this]
210
+
211
+ ## Git Workflow
212
+ ${gitContributors ? `\n**Top Contributors:**\n\`\`\`\n${gitContributors}\n\`\`\`` : '[Run git log to populate]'}
213
+
214
+ ## Code Review Standards
215
+ - SOLID principles enforced
216
+ - Single Responsibility Pattern required
217
+ - All code in English
218
+
219
+ ## Related
220
+ - [[architecture]] — where things live
221
+ - [[README]] — project overview
222
+ `);
223
+
224
+ console.log(` ${GREEN}✓${NC} .palbox/README.md`);
225
+ console.log(` ${GREEN}✓${NC} .palbox/architecture.md`);
226
+ console.log(` ${GREEN}✓${NC} .palbox/methods.md`);
227
+ console.log(` ${GREEN}✓${NC} .palbox/flows/`);
228
+ console.log(` ${GREEN}✓${NC} .palbox/history/`);
229
+ console.log(` ${GREEN}✓${NC} .palbox/plans/`);
230
+ console.log('');
231
+ console.log(` Detected: ${language} + ${framework}`);
232
+ if (gitContributors) console.log(` Git history found`);
233
+ console.log('');
234
+ console.log(` Next steps:`);
235
+ console.log(` 1. Edit .palbox/README.md with project details`);
236
+ console.log(` 2. Run 'palskills' again to generate agent configs`);
237
+ console.log(` 3. Or use Hermes skills: "Load lyleen, build feature X"`);
238
+ }
239
+
60
240
  function generate(agent) {
61
241
  const cwd = process.cwd();
62
242
 
@@ -80,155 +260,159 @@ function generate(agent) {
80
260
  }
81
261
 
82
262
  function codexRules() {
83
- return `# Codex Rules — Palskills
84
- # Generated by palskills CLI
85
-
86
- ## SOLID Principles (Enforced)
87
- 1. **Single Responsibility:** Every class/module/function has exactly ONE reason to change.
88
- 2. **Open/Closed:** Extend via inheritance/composition, never modify existing code.
89
- 3. **Liskov Substitution:** Subtypes must be fully substitutable for their base types.
90
- 4. **Interface Segregation:** Small, focused interfaces. No client depends on unused methods.
91
- 5. **Dependency Inversion:** Depend on abstractions. Inject dependencies.
92
-
93
- ## SRP Enforcement
94
- - Repository → data access ONLY
95
- - Service → business logic ONLY
96
- - Validator → validation rules ONLY
97
- - Model → data structures ONLY
98
- - If a class mixes these, REFACTOR immediately.
99
-
100
- ## Code Structure
101
- - No file exceeds 200 lines without strong justification.
102
- - Business logic → services/. Data access → repositories/. Validation → validators/.
103
- - Models are pure data structures — no methods, no logic.
104
-
105
- ## Language
106
- ALL code, comments, docstrings, variable names, and commit messages MUST be in English.
107
-
108
- ## Git
109
- - One commit per logical change.
110
- - Conventional commits: feat(scope): description / fix(scope): description / test(scope): description
111
-
112
- ## Palbox Knowledge Graph (CRITICAL)
113
- ### Before you start ANY task
114
- 1. **Check if .palbox/ exists.** If not, the project has not been bootstrapped yet.
115
- 2. **Read the core nodes:**
116
- - .palbox/README.md — project identity, tech stack, goals
117
- - .palbox/architecture.md — folder structure, design patterns, key modules
118
- - .palbox/methods.md — coding conventions, testing strategy, git workflow
119
- 3. **Search for related past work:**
120
- - Search for keywords in .palbox/flows/ and .palbox/history/
121
- - Follow wikilinks to discover connected context
122
- 4. **Read relevant flows** in .palbox/flows/ — they document how features work end-to-end
123
- 5. **Read relevant history** in .palbox/history/ — past plans, executions, lessons learned
124
-
125
- ### After you complete a task
126
- - Record what you did. The Palskills system (Panthalus) will create a .palbox/history/YYYY-MM-DD-feature.md node with wikilinks to related entries.
127
- - If you discovered new patterns, conventions, or pitfalls, note them — they enrich the graph.
128
- `;
263
+ return palskillsAgentConfig('Codex');
129
264
  }
130
265
 
131
266
  function cursorRules() {
132
- return `# Cursor Rules — Palskills
133
- # Generated by palskills CLI
134
-
135
- ## Core Principles
136
- You are working in a project managed by the Palskills development system.
137
- Always follow these rules.
138
-
139
- ### SOLID
140
- 1. **S** — Single Responsibility: one class, one reason to change.
141
- 2. **O** — Open/Closed: extend, don't modify.
142
- 3. **L** — Liskov Substitution: subtypes fully substitutable.
143
- 4. **I** — Interface Segregation: small interfaces, no fat abstractions.
144
- 5. **D** — Dependency Inversion: depend on abstractions, inject deps.
145
-
146
- ### SRP (Single Responsibility Pattern)
147
- - Repository classes: data access ONLY
148
- - Service classes: business logic ONLY
149
- - Validator classes: validation rules ONLY
150
- - Model classes: data structures ONLY
151
- - If any module mixes these, REFACTOR.
152
-
153
- ### Language
154
- ALL code, comments, docs, variable names, and commit messages MUST be in English.
155
-
156
- ### Git
157
- - One commit per logical change
158
- - Conventional commits format: feat(scope): / fix(scope): / test(scope):
159
-
160
- ### Project Context — Palbox Knowledge Graph
161
- Before you start ANY task:
162
- 1. **Check if .palbox/ exists.** Read the core nodes:
163
- - .palbox/README.md — project identity, stack, goals
164
- - .palbox/architecture.md — folder structure, patterns, key modules
165
- - .palbox/methods.md — conventions, testing, git workflow
166
- 2. **Search .palbox/flows/ and .palbox/history/** for related past work.
167
- 3. **Follow wikilinks** — they connect related nodes in the knowledge graph.
168
-
169
- After completing work:
170
- - The Palskills system (Panthalus) records to .palbox/history/ with bi-directional links.
171
-
172
- ### Code Quality
173
- - No file exceeds 200 lines without strong justification.
174
- - Every function has a clear, single purpose.
175
- - Prefer composition over inheritance.
176
- - Write tests for all new logic.
177
- `;
267
+ return palskillsAgentConfig('Cursor');
178
268
  }
179
269
 
180
270
  function claudeRules() {
181
- return `# CLAUDE.md — Palskills
182
- # Generated by palskills CLI
183
-
184
- ## Who You Are
185
- You are an AI coding assistant working in a Palskills-managed project.
186
- You follow SOLID principles, Single Responsibility Pattern, and write all code in English.
187
-
188
- ## SOLID (Strict)
189
- 1. **Single Responsibility:** Every class, module, and function has exactly ONE reason to change.
190
- 2. **Open/Closed:** Open for extension via inheritance/composition, closed for modification.
191
- 3. **Liskov Substitution:** Derived classes must be fully substitutable for base classes.
192
- 4. **Interface Segregation:** Many small, focused interfaces — no fat abstractions.
193
- 5. **Dependency Inversion:** Depend on abstractions, inject dependencies. Never instantiate collaborators in business logic.
194
-
195
- ## SRP (Single Responsibility Pattern)
196
- - Repository classes → data access ONLY
197
- - Service classes → business logic ONLY
198
- - Validator classes → validation rules ONLY
199
- - Model classes → data structures ONLY (no methods, no logic)
200
- - If a class mixes these concerns, REFACTOR immediately.
201
-
202
- ## Code Structure
203
- \`\`\`
204
- src/
205
- ├── models/ # Pure data structures
206
- ├── repositories/ # Data access layer
207
- ├── services/ # Business logic
208
- ├── validators/ # Validation rules
209
- └── interfaces/ # Abstract bases & protocols
210
- \`\`\`
271
+ return palskillsAgentConfig('Claude Code');
272
+ }
211
273
 
212
- ## Language
213
- ALL code, comments, docstrings, variable names, function names, and commit messages MUST be in English.
214
-
215
- ## Git
216
- - One commit per logical change.
217
- - Conventional commits: feat(scope): / fix(scope): / test(scope):
218
- - Never commit generated files, node_modules, or secrets.
219
-
220
- ## Project Context — Palbox Knowledge Graph
221
- Before starting any task:
222
- 1. Check if .palbox/ exists. Read the core nodes:
223
- - .palbox/README.md project identity, stack, goals
224
- - .palbox/architecture.md — folder structure, patterns, key modules
225
- - .palbox/methods.md — conventions, testing, git workflow
226
- 2. Search .palbox/flows/ and .palbox/history/ for related past work.
227
- 3. Follow wikilinks — they connect related nodes in the knowledge graph.
228
-
229
- After completing work:
230
- - The Palskills system (Panthalus) records your session to .palbox/history/ with bi-directional wikilinks.
231
- - If you discovered patterns, pitfalls, or conventions worth preserving, note them.
274
+ function palskillsAgentConfig(agentName) {
275
+ return `# Palskills Multi-Mode AI Development System
276
+ # Generated for ${agentName}
277
+ #
278
+ # HOW TO USE: Start your prompt with the skill name.
279
+ # "Lyleen: learn the ftz export module"
280
+ # "Jetdragon: plan a forgot-password feature"
281
+ # "Anubis: implement the approved plan"
282
+ # "Panthalus: record this session"
283
+ #
284
+ # Or let Astralym orchestrate the full flow:
285
+ # "Astralym: build a user dashboard"
286
+
287
+ ---
288
+
289
+ ## SKILL MODES
290
+
291
+ You are an AI coding agent with **5 selectable skill modes**. When the user starts a prompt with a skill name followed by a colon, activate that mode immediately.
292
+
293
+ ---
294
+
295
+ ### LYLEEN — Palbox Knowledge Graph
296
+ **Trigger:** Prompt starts with "Lyleen:" or "lyleen:"
297
+ **Role:** Read and bootstrap the project knowledge graph.
298
+
299
+ #### If .palbox/ does NOT exist — BOOTSTRAP:
300
+ 1. Scan the project structure:
301
+ - Read package.json / requirements.txt / go.mod / Cargo.toml to detect tech stack
302
+ - List top-level directories (skip .git, node_modules, __pycache__)
303
+ - Read existing README.md if present
304
+ - Check git log for contributors and recent activity
305
+ - Find testing patterns (files matching *test*, *spec*)
306
+ 2. Create .palbox/ with this structure:
307
+ - .palbox/README.md — project name, tech stack, goals, quick start, knowledge graph links
308
+ - .palbox/architecture.md — folder structure tree, design patterns, key modules table, data flow
309
+ - .palbox/methods.md — coding conventions, testing strategy, git workflow, code review standards
310
+ 3. Create subdirectories: flows/, history/, plans/
311
+ 4. Every .md file MUST include wikilinks ([[other-file]]) to connect the graph
312
+ 5. Report: "Palbox bootstrapped. N files analyzed. Detected: [tech stack]."
313
+
314
+ #### If .palbox/ EXISTS — CONTEXT RETRIEVAL:
315
+ 1. Read .palbox/README.md, .palbox/architecture.md, .palbox/methods.md
316
+ 2. Search .palbox/flows/ and .palbox/history/ for keywords in the user query
317
+ 3. Extract all [[wikilinks]] from matching files. Follow them 1-2 hops deep.
318
+ 4. Return a "Context Subgraph" summary:
319
+ - Seed nodes (direct matches)
320
+ - 1-hop neighbors (linked context)
321
+ - 2-hop neighbors (extended context)
322
+ - Relevant conventions and past decisions
323
+ 5. If nothing relevant found, say so clearly.
324
+
325
+ ---
326
+
327
+ ### JETDRAGON — Planner
328
+ **Trigger:** Prompt starts with "Jetdragon:" or "jetdragon:"
329
+ **Role:** Create detailed, actionable implementation plans. Ask questions until the plan is crystal clear.
330
+
331
+ 1. First, act like Lyleen to gather palbox context (read core docs, search for related work)
332
+ 2. Generate a plan saved to .palbox/plans/YYYY-MM-DD-feature-name.md:
333
+ - Overview (2-3 sentences)
334
+ - Scope: in scope / out of scope
335
+ - Tasks ordered by dependency, each with: what, files to touch, verification steps
336
+ - Architecture notes: patterns to use, SOLID focus
337
+ - Risks and mitigations
338
+ - Use [[wikilinks]] to reference .palbox/ entries
339
+ 3. If ANYTHING is ambiguous, ASK the user:
340
+ - Scope: "Should this also handle X?"
341
+ - Design: "Class-based or functional?"
342
+ - Edge cases: "What happens when input is empty?"
343
+ - Integration: "Does this touch the existing auth module?"
344
+ - Priority: "Which task first?"
345
+ 4. Iterate: user responds → update plan → ask more → repeat
346
+ 5. When the user says "Gas", "Go", "Execute", or "Approved":
347
+ - Update status to APPROVED
348
+ - Output: "Plan approved. Ready for Anubis."
349
+ - Include the full plan for the next step
350
+
351
+ ---
352
+
353
+ ### ANUBIS — Developer
354
+ **Trigger:** Prompt starts with "Anubis:" or "anubis:"
355
+ **Role:** Execute an approved plan following SOLID + SRP. All code in English.
356
+
357
+ 1. Read the approved plan from .palbox/plans/ or from the provided context
358
+ 2. Execute task by task, in order:
359
+ - Read existing files before modifying
360
+ - Write code following SOLID + SRP
361
+ - Write tests if the project has testing patterns
362
+ - Verify acceptance criteria
363
+ 3. **SOLID (strict):**
364
+ - Single Responsibility: one class, one reason to change
365
+ - Open/Closed: extend, never modify existing
366
+ - Liskov Substitution: subtypes fully substitutable
367
+ - Interface Segregation: small focused interfaces
368
+ - Dependency Inversion: depend on abstractions, inject deps
369
+ 4. **SRP Separation:**
370
+ - Repository → data access ONLY
371
+ - Service → business logic ONLY
372
+ - Validator → validation rules ONLY
373
+ - Model → data structures ONLY
374
+ - If a class mixes these, REFACTOR immediately
375
+ 5. **Language:** ALL code, comments, docstrings, variable names, and commit messages MUST be in English
376
+ 6. **Git:** one commit per logical change. Conventional commits format
377
+ 7. After all tasks complete, output a summary: files changed, commits made, verification results
378
+
379
+ ---
380
+
381
+ ### PANTHALUS — Archivist
382
+ **Trigger:** Prompt starts with "Panthalus:" or "panthalus:"
383
+ **Role:** Record the session to the .palbox/ knowledge graph with bi-directional links.
384
+
385
+ 1. Collect artifacts: the plan, git diff summary, commit messages, decisions made
386
+ 2. Create .palbox/history/YYYY-MM-DD-feature-name.md:
387
+ - Links section with [[wikilinks]] to related entries (flows, architecture, past history)
388
+ - Original prompt
389
+ - Plan (full, not summarized)
390
+ - Execution: files changed, commits
391
+ - Key decisions table
392
+ - Lessons learned (pitfalls, discoveries, patterns)
393
+ 3. **Create backlinks:** For EVERY [[wikilink]] in the history entry, go to that file and add a reference back:
394
+ - Add "## Related Sessions" section if it does not exist
395
+ - Append "- [[history/YYYY-MM-DD-feature]] — [one-line summary]"
396
+ 4. Update core docs only if structural knowledge changed (new modules, new conventions)
397
+ 5. Report graph stats: new node, edges created, nodes enriched, total nodes/edges
398
+
399
+ ---
400
+
401
+ ### ASTRALYM — Orchestrator
402
+ **Trigger:** Prompt starts with "Astralym:" or "astralym:"
403
+ **Role:** Run the full development pipeline automatically.
404
+
405
+ 1. **CHECK_GRAPH** — Act as Lyleen: bootstrap .palbox/ if missing, or retrieve context subgraph
406
+ 2. **PLANNING** — Act as Jetdragon: create plan, ask clarifying questions, wait for "Gas"
407
+ 3. **DEVELOPING** — Act as Anubis: execute the approved plan with SOLID + SRP
408
+ 4. **RECORDING** — Act as Panthalus: record everything to .palbox/ with backlinks
409
+ 5. **DONE** — Report summary with graph stats
410
+
411
+ ---
412
+
413
+ ## DEFAULT MODE
414
+
415
+ When no specific skill is triggered, act as **Anubis** by default — write code following SOLID + SRP, all output in English. Before starting any task, quickly check .palbox/ for relevant context (like Lyleen, but minimal — 30 seconds max).
232
416
  `;
233
417
  }
234
418
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "palskills",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "AI-powered development pipeline — 5 Hermes Agent skills orchestrated as a knowledge graph",
5
5
  "keywords": [
6
6
  "hermes-agent",