palskills 1.0.5 → 1.0.7
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/README.md +61 -34
- package/bin/palskills.js +175 -170
- package/package.json +1 -1
- package/skills/astralym/SKILL.md +67 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Palskills
|
|
2
2
|
|
|
3
|
-
**AI-powered development pipeline** —
|
|
3
|
+
**AI-powered development pipeline** for any coding agent — Codex, Cursor, Claude Code, and more. Five specialized skills orchestrate the full development lifecycle: learn the codebase → plan with clarification → execute with SOLID/SRP → record to a knowledge graph.
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
@@ -8,37 +8,28 @@
|
|
|
8
8
|
|
|
9
9
|
| Skill | Role | Key Trait |
|
|
10
10
|
|-------|------|-----------|
|
|
11
|
-
| **Astralym** |
|
|
12
|
-
| **Lyleen** |
|
|
13
|
-
| **Jetdragon** | Planner | Asks
|
|
14
|
-
| **Anubis** |
|
|
15
|
-
| **Panthalus** | Archivist | Records
|
|
11
|
+
| **Astralym** | Orchestrator | Runs the full pipeline, tracks progress in `state.md` |
|
|
12
|
+
| **Lyleen** | Knowledge Graph | Bootstraps `.palbox/` or traverses `[[wikilinks]]` for context |
|
|
13
|
+
| **Jetdragon** | Planner | Asks clarifying questions, generates detailed plans |
|
|
14
|
+
| **Anubis** | Developer | SOLID + SRP enforced, English only |
|
|
15
|
+
| **Panthalus** | Archivist | Records every session with bi-directional `[[wikilinks]]` |
|
|
16
16
|
|
|
17
17
|
## Prerequisites
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
- [Codex CLI](https://github.com/openai/codex) (`npm install -g @openai/codex`)
|
|
19
|
+
- Node.js 18+
|
|
21
20
|
- Git (all work happens in git repositories)
|
|
21
|
+
- Any AI coding agent: [Codex CLI](https://github.com/openai/codex), [Cursor](https://cursor.com), or [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
|
|
22
22
|
|
|
23
23
|
## Install
|
|
24
24
|
|
|
25
|
-
### npm (recommended)
|
|
26
25
|
```bash
|
|
27
26
|
npm install -g palskills
|
|
28
|
-
# Skills auto-installed to ~/.hermes/skills/palskills/
|
|
29
27
|
```
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
git clone https://github.com/faizalardhi16/palskills.git
|
|
34
|
-
cd palskills
|
|
35
|
-
./install.sh
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Usage
|
|
29
|
+
## Quick Start
|
|
39
30
|
|
|
40
|
-
### Interactive CLI
|
|
41
31
|
```bash
|
|
32
|
+
cd your-project
|
|
42
33
|
palskills
|
|
43
34
|
```
|
|
44
35
|
|
|
@@ -51,36 +42,72 @@ palskills
|
|
|
51
42
|
What do you want to do?
|
|
52
43
|
|
|
53
44
|
[1] Learn Project → bootstrap .palbox/ (Lyleen)
|
|
54
|
-
[2] Codex CLI → .codex
|
|
55
|
-
[3] Cursor → .
|
|
56
|
-
[4] Claude Code →
|
|
45
|
+
[2] Codex CLI → .codex/skills/
|
|
46
|
+
[3] Cursor → .cursor/skills/
|
|
47
|
+
[4] Claude Code → .claude/skills/
|
|
57
48
|
[5] All Agents → generate all configs
|
|
58
49
|
|
|
59
50
|
Choose [1-5]:
|
|
60
51
|
```
|
|
61
52
|
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
### Step 1 — Learn the project
|
|
54
|
+
|
|
55
|
+
Pick `[1]`. Lyleen scans your codebase and creates `.palbox/` — a knowledge graph with project identity, architecture map, and conventions.
|
|
56
|
+
|
|
57
|
+
### Step 2 — Generate agent skills
|
|
58
|
+
|
|
59
|
+
Pick your agent `[2-4]`, or `[5]` for all. Each agent gets 5 skill files ready to use.
|
|
60
|
+
|
|
61
|
+
## How to Develop with Palskills
|
|
62
|
+
|
|
63
|
+
Once skills are generated, open your AI coding agent and start a prompt with a skill name:
|
|
64
|
+
|
|
65
|
+
### Full Pipeline (recommended)
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
```
|
|
68
|
+
Astralym: build a PDF export feature for the reports module
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Astralym runs all 5 steps: learns the codebase → plans with your input → executes code → records everything. Tracks progress in `.palbox/state.md` with checkboxes — resumable if interrupted.
|
|
72
|
+
|
|
73
|
+
### Individual Skills
|
|
74
|
+
|
|
75
|
+
| Prompt | What happens |
|
|
76
|
+
|--------|-------------|
|
|
77
|
+
| `Lyleen: learn the auth module` | Reads or bootstraps `.palbox/`, returns relevant context |
|
|
78
|
+
| `Jetdragon: plan a forgot-password feature` | Creates `.palbox/plans/` plan, asks clarifying questions. Say **"Gas"** when ready |
|
|
79
|
+
| `Anubis: implement the approved plan` | Executes the plan with SOLID + SRP, all code in English |
|
|
80
|
+
| `Panthalus: record this session` | Saves to `.palbox/history/` with bi-directional `[[wikilinks]]` |
|
|
81
|
+
|
|
82
|
+
### Flow
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
Lyleen (context) → Jetdragon (plan) → "Gas" → Anubis (code) → Panthalus (record)
|
|
68
86
|
```
|
|
69
87
|
|
|
70
88
|
## Palbox
|
|
71
89
|
|
|
72
|
-
|
|
90
|
+
The `.palbox/` knowledge graph grows with every session:
|
|
73
91
|
|
|
74
92
|
```
|
|
75
93
|
.palbox/
|
|
76
|
-
├──
|
|
77
|
-
├──
|
|
78
|
-
├──
|
|
79
|
-
├──
|
|
80
|
-
├──
|
|
81
|
-
|
|
94
|
+
├── state.md # Pipeline progress tracker
|
|
95
|
+
├── README.md # Project identity & tech stack
|
|
96
|
+
├── architecture.md # Folder map & design patterns
|
|
97
|
+
├── methods.md # Conventions & standards
|
|
98
|
+
├── flows/ # Feature workflow docs
|
|
99
|
+
├── plans/ # Active plans
|
|
100
|
+
└── history/ # Past sessions with [[wikilinks]]
|
|
82
101
|
```
|
|
83
102
|
|
|
103
|
+
## Supported Agents
|
|
104
|
+
|
|
105
|
+
| Agent | Skills Directory | Config Format |
|
|
106
|
+
|-------|-----------------|---------------|
|
|
107
|
+
| Codex CLI | `.codex/skills/` | Markdown skill files |
|
|
108
|
+
| Cursor | `.cursor/skills/` | Markdown skill files |
|
|
109
|
+
| Claude Code | `.claude/skills/` | Markdown skill files |
|
|
110
|
+
|
|
84
111
|
## License
|
|
85
112
|
|
|
86
113
|
MIT
|
package/bin/palskills.js
CHANGED
|
@@ -32,9 +32,9 @@ async function main() {
|
|
|
32
32
|
console.log(` ${BOLD}What do you want to do?${NC}`);
|
|
33
33
|
console.log('');
|
|
34
34
|
console.log(` ${MAGENTA}[1]${NC} Learn Project → bootstrap .palbox/ (Lyleen)`);
|
|
35
|
-
console.log(` ${MAGENTA}[2]${NC} Codex CLI → .codex
|
|
36
|
-
console.log(` ${MAGENTA}[3]${NC} Cursor → .
|
|
37
|
-
console.log(` ${MAGENTA}[4]${NC} Claude Code →
|
|
35
|
+
console.log(` ${MAGENTA}[2]${NC} Codex CLI → .codex/skills/`);
|
|
36
|
+
console.log(` ${MAGENTA}[3]${NC} Cursor → .cursor/skills/`);
|
|
37
|
+
console.log(` ${MAGENTA}[4]${NC} Claude Code → .claude/skills/`);
|
|
38
38
|
console.log(` ${MAGENTA}[5]${NC} All Agents → generate all configs`);
|
|
39
39
|
console.log('');
|
|
40
40
|
|
|
@@ -239,181 +239,186 @@ ${gitContributors ? `\n**Top Contributors:**\n\`\`\`\n${gitContributors}\n\`\`\`
|
|
|
239
239
|
|
|
240
240
|
function generate(agent) {
|
|
241
241
|
const cwd = process.cwd();
|
|
242
|
+
const skillNames = ['lyleen', 'jetdragon', 'anubis', 'panthalus', 'astralym'];
|
|
242
243
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
244
|
+
let dir;
|
|
245
|
+
if (agent === 'codex') dir = path.join(cwd, '.codex', 'skills');
|
|
246
|
+
else if (agent === 'cursor') dir = path.join(cwd, '.cursor', 'skills');
|
|
247
|
+
else if (agent === 'claude') dir = path.join(cwd, '.claude', 'skills');
|
|
248
248
|
|
|
249
|
-
|
|
250
|
-
const file = path.join(cwd, '.cursorrules');
|
|
251
|
-
fs.writeFileSync(file, cursorRules());
|
|
252
|
-
console.log(` ${GREEN}✓${NC} .cursorrules`);
|
|
253
|
-
}
|
|
249
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
254
250
|
|
|
255
|
-
|
|
256
|
-
const file = path.join(
|
|
257
|
-
fs.writeFileSync(file,
|
|
258
|
-
console.log(` ${GREEN}✓${NC}
|
|
251
|
+
for (const name of skillNames) {
|
|
252
|
+
const file = path.join(dir, `${name}.md`);
|
|
253
|
+
fs.writeFileSync(file, skillContent(agent, name));
|
|
254
|
+
console.log(` ${GREEN}✓${NC} ${dir}/${name}.md`);
|
|
259
255
|
}
|
|
260
256
|
}
|
|
261
257
|
|
|
262
|
-
function
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
258
|
+
function skillContent(agent, skill) {
|
|
259
|
+
const skills = {
|
|
260
|
+
lyleen: `# Lyleen — Palbox Knowledge Graph
|
|
261
|
+
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
262
|
+
|
|
263
|
+
## Role
|
|
264
|
+
Read and bootstrap the project knowledge graph (.palbox/).
|
|
265
|
+
|
|
266
|
+
## If .palbox/ does NOT exist — BOOTSTRAP:
|
|
267
|
+
1. Scan project: read package.json/requirements.txt/go.mod, list dirs, check git log, find tests
|
|
268
|
+
2. Create .palbox/README.md — project name, tech stack, goals, [[links]]
|
|
269
|
+
3. Create .palbox/architecture.md — folder tree, design patterns, key modules
|
|
270
|
+
4. Create .palbox/methods.md — conventions, testing, git workflow
|
|
271
|
+
5. Create .palbox/flows/, .palbox/history/, .palbox/plans/
|
|
272
|
+
6. Report: "Palbox bootstrapped. N files. Detected: [stack]."
|
|
273
|
+
|
|
274
|
+
## If .palbox/ EXISTS — RETRIEVE:
|
|
275
|
+
1. Read README.md, architecture.md, methods.md
|
|
276
|
+
2. Search flows/ and history/ for user keywords
|
|
277
|
+
3. Extract [[wikilinks]], follow 1-2 hops
|
|
278
|
+
4. Return context subgraph: seeds → 1-hop → 2-hop → conventions
|
|
279
|
+
`,
|
|
280
|
+
jetdragon: `# Jetdragon — Planner
|
|
281
|
+
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
282
|
+
|
|
283
|
+
## Role
|
|
284
|
+
Create detailed implementation plans. Ask questions until clear.
|
|
285
|
+
|
|
286
|
+
## Process
|
|
287
|
+
1. Gather palbox context (read core docs, search related history)
|
|
288
|
+
2. Generate plan → .palbox/plans/YYYY-MM-DD-feature.md with [[wikilinks]]
|
|
289
|
+
3. If ambiguous, ASK: scope, design, edge cases, integration, priority
|
|
290
|
+
4. Iterate until user says "Gas", "Go", "Execute"
|
|
291
|
+
5. Finalize as APPROVED, hand off to Anubis
|
|
292
|
+
|
|
293
|
+
## Plan Template
|
|
294
|
+
- Overview, Scope (in/out), Tasks (ordered, with files + verification)
|
|
295
|
+
- Architecture notes, SOLID focus, Risks & Mitigations
|
|
296
|
+
- All references use [[wikilinks]] to .palbox/ entries
|
|
297
|
+
`,
|
|
298
|
+
anubis: `# Anubis — Developer
|
|
299
|
+
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
300
|
+
|
|
301
|
+
## Role
|
|
302
|
+
Execute approved plans. SOLID + SRP enforced. English only.
|
|
303
|
+
|
|
304
|
+
## SOLID (Strict)
|
|
305
|
+
- **S**: One class, one reason to change
|
|
306
|
+
- **O**: Extend, never modify existing
|
|
307
|
+
- **L**: Subtypes fully substitutable
|
|
308
|
+
- **I**: Small focused interfaces
|
|
309
|
+
- **D**: Depend on abstractions, inject deps
|
|
310
|
+
|
|
311
|
+
## SRP Separation
|
|
312
|
+
- Repository → data access ONLY
|
|
313
|
+
- Service → business logic ONLY
|
|
314
|
+
- Validator → validation rules ONLY
|
|
315
|
+
- Model → data structures ONLY
|
|
316
|
+
|
|
317
|
+
## Rules
|
|
318
|
+
- ALL code, comments, docstrings, commits in English
|
|
319
|
+
- One commit per logical change (conventional commits)
|
|
320
|
+
- Read existing files before modifying
|
|
321
|
+
- Write tests if project has testing patterns
|
|
322
|
+
`,
|
|
323
|
+
panthalus: `# Panthalus — Archivist
|
|
324
|
+
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
325
|
+
|
|
326
|
+
## Role
|
|
327
|
+
Record sessions to .palbox/ with bi-directional [[wikilinks]].
|
|
328
|
+
|
|
329
|
+
## Process
|
|
330
|
+
1. Collect: plan, git diff, commits, decisions, lessons
|
|
331
|
+
2. Create .palbox/history/YYYY-MM-DD-feature.md with [[wikilinks]]
|
|
332
|
+
3. For EVERY link, add backlink to the target file ("Related Sessions")
|
|
333
|
+
4. Update core docs (architecture/methods) only if structure changed
|
|
334
|
+
5. Report graph stats: nodes, edges, enriched
|
|
335
|
+
|
|
336
|
+
## History Entry Template
|
|
337
|
+
- Links ([[flows/]], [[architecture]], [[history/]])
|
|
338
|
+
- Original prompt, Plan, Execution (files + commits)
|
|
339
|
+
- Key Decisions table, Lessons Learned (pitfalls, discoveries)
|
|
340
|
+
- Backlinks section
|
|
341
|
+
`,
|
|
342
|
+
astralym: `# Astralym — Orchestrator
|
|
343
|
+
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
344
|
+
|
|
345
|
+
## Role
|
|
346
|
+
Run the full development pipeline. Track every step in .palbox/state.md.
|
|
347
|
+
|
|
348
|
+
## Pipeline
|
|
349
|
+
1. **CHECK_GRAPH** → Lyleen: bootstrap or retrieve context
|
|
350
|
+
2. **PLANNING** → Jetdragon: create plan, ask questions, wait for "Gas"
|
|
351
|
+
3. **DEVELOPING** → Anubis: execute with SOLID + SRP
|
|
352
|
+
4. **RECORDING** → Panthalus: record with backlinks
|
|
353
|
+
5. **DONE** → Summary with graph stats
|
|
354
|
+
|
|
355
|
+
## CRITICAL: state.md
|
|
356
|
+
|
|
357
|
+
ON LOAD: Create or read .palbox/state.md. This file tracks pipeline progress with checkboxes.
|
|
358
|
+
|
|
359
|
+
### state.md Template
|
|
360
|
+
Create this file IMMEDIATELY when Astralym is activated:
|
|
361
|
+
|
|
362
|
+
\`\`\`markdown
|
|
363
|
+
# Astralym Pipeline State
|
|
364
|
+
**Feature:** [extract from user prompt]
|
|
365
|
+
**Started:** [current datetime]
|
|
366
|
+
**Last Updated:** [current datetime]
|
|
367
|
+
|
|
368
|
+
## Progress
|
|
369
|
+
- [ ] CHECK_GRAPH — Lyleen: bootstrap or retrieve context
|
|
370
|
+
- [ ] PLANNING — Jetdragon: create plan, ask questions
|
|
371
|
+
- [ ] DEVELOPING — Anubis: execute with SOLID + SRP
|
|
372
|
+
- [ ] RECORDING — Panthalus: record with backlinks
|
|
373
|
+
- [ ] DONE — Report summary
|
|
374
|
+
|
|
375
|
+
## Plan
|
|
376
|
+
pending
|
|
377
|
+
|
|
378
|
+
## Context
|
|
379
|
+
pending
|
|
380
|
+
\`\`\`
|
|
269
381
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
382
|
+
### Rules for state.md
|
|
383
|
+
1. **Create BEFORE running any step.** The file must exist from the start.
|
|
384
|
+
2. **Checkmark [x] each step IMMEDIATELY after completion.** Do not batch.
|
|
385
|
+
3. **Add notes after each step:**
|
|
386
|
+
- CHECK_GRAPH: "Retrieved [N] relevant nodes" or "Bootstrapped palbox"
|
|
387
|
+
- PLANNING: Link to plan file: [[plans/YYYY-MM-DD-feature]]
|
|
388
|
+
- DEVELOPING: "Implemented: [files changed], [N] commits"
|
|
389
|
+
- RECORDING: Link to history: [[history/YYYY-MM-DD-feature]]
|
|
390
|
+
- DONE: "Completed at [datetime]. [N] files, [M] commits."
|
|
391
|
+
4. **If a step fails or is interrupted,** mark it with [!] and note why.
|
|
392
|
+
5. **Update "Last Updated"** every time you touch the file.
|
|
393
|
+
6. **On resume:** Read state.md first. Skip completed steps. Continue from first unchecked.
|
|
394
|
+
|
|
395
|
+
### Example After Completion
|
|
396
|
+
\`\`\`markdown
|
|
397
|
+
# Astralym Pipeline State
|
|
398
|
+
**Feature:** Export Laporan PDF
|
|
399
|
+
**Started:** 2026-07-19 16:30
|
|
400
|
+
**Last Updated:** 2026-07-19 17:15
|
|
401
|
+
|
|
402
|
+
## Progress
|
|
403
|
+
- [x] CHECK_GRAPH — Lyleen: Retrieved 3 nodes ([[flows/export]], [[architecture]], [[methods]])
|
|
404
|
+
- [x] PLANNING — Jetdragon: [[plans/2026-07-19-export-pdf]]
|
|
405
|
+
- [x] DEVELOPING — Anubis: src/export/pdf.py, src/export/templates/, 4 commits
|
|
406
|
+
- [x] RECORDING — Panthalus: [[history/2026-07-19-export-pdf]]
|
|
407
|
+
- [x] DONE — Completed at 2026-07-19 17:15. 3 files, 4 commits.
|
|
408
|
+
|
|
409
|
+
## Plan
|
|
410
|
+
[[plans/2026-07-19-export-pdf]]
|
|
411
|
+
|
|
412
|
+
## Context
|
|
413
|
+
- [[flows/export]] — existing export pipeline
|
|
414
|
+
- [[architecture]] — module structure
|
|
415
|
+
- [[methods]] — testing conventions
|
|
416
|
+
\`\`\`
|
|
273
417
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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).
|
|
416
|
-
`;
|
|
418
|
+
## Usage
|
|
419
|
+
User says "Astralym: build feature X" → create state.md → run pipeline step by step → checkmark progress.`
|
|
420
|
+
};
|
|
421
|
+
return skills[skill] || '';
|
|
417
422
|
}
|
|
418
423
|
|
|
419
424
|
function installSkills() {
|
package/package.json
CHANGED
package/skills/astralym/SKILL.md
CHANGED
|
@@ -86,6 +86,45 @@ Astralym is the central orchestrator of the palskills development system. It rou
|
|
|
86
86
|
| `RECORDING` | Panthalus | Create history node → add `[[wikilinks]]` → create backlinks → enrich graph |
|
|
87
87
|
| `DONE` | Astralym | Report summary + graph stats; return to IDLE |
|
|
88
88
|
|
|
89
|
+
## CRITICAL: state.md
|
|
90
|
+
|
|
91
|
+
ON LOAD: Astralym MUST create or read `.palbox/state.md`. This file tracks pipeline progress with checkboxes and makes the state machine visible, resumable, and auditable.
|
|
92
|
+
|
|
93
|
+
### state.md Template
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Astralym Pipeline State
|
|
97
|
+
**Feature:** [extract from user prompt]
|
|
98
|
+
**Started:** [current datetime]
|
|
99
|
+
**Last Updated:** [current datetime]
|
|
100
|
+
|
|
101
|
+
## Progress
|
|
102
|
+
- [ ] CHECK_GRAPH — Lyleen: bootstrap or retrieve context
|
|
103
|
+
- [ ] PLANNING — Jetdragon: create plan, ask questions
|
|
104
|
+
- [ ] DEVELOPING — Anubis → Codex: execute with SOLID + SRP
|
|
105
|
+
- [ ] RECORDING — Panthalus: record with backlinks
|
|
106
|
+
- [ ] DONE — Report summary
|
|
107
|
+
|
|
108
|
+
## Plan
|
|
109
|
+
pending
|
|
110
|
+
|
|
111
|
+
## Context
|
|
112
|
+
pending
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Rules for state.md
|
|
116
|
+
1. **Create BEFORE running any step.** The file must exist from the start.
|
|
117
|
+
2. **Checkmark `[x]` each step IMMEDIATELY after completion.** Do not batch.
|
|
118
|
+
3. **Add notes after each step:**
|
|
119
|
+
- CHECK_GRAPH: "Retrieved [N] relevant nodes" or "Bootstrapped palbox with [N] files"
|
|
120
|
+
- PLANNING: Link to plan: `[[plans/YYYY-MM-DD-feature]]`
|
|
121
|
+
- DEVELOPING: "Implemented: [files changed], [N] commits"
|
|
122
|
+
- RECORDING: Link to history: `[[history/YYYY-MM-DD-feature]]`
|
|
123
|
+
- DONE: "Completed at [datetime]. [N] files, [M] commits."
|
|
124
|
+
4. **If a step fails or is interrupted,** mark it with `[!]` and note why.
|
|
125
|
+
5. **Update "Last Updated"** every time you touch the file.
|
|
126
|
+
6. **On resume:** Read state.md first. Skip `[x]` completed steps. Continue from first `[ ]`.
|
|
127
|
+
|
|
89
128
|
## Palbox Knowledge Graph Structure
|
|
90
129
|
|
|
91
130
|
```
|
|
@@ -101,6 +140,30 @@ Astralym is the central orchestrator of the palskills development system. It rou
|
|
|
101
140
|
└── YYYY-MM-DD-*.md
|
|
102
141
|
```
|
|
103
142
|
|
|
143
|
+
## Usage Modes
|
|
144
|
+
|
|
145
|
+
Palskills works in **two environments**, not just Hermes:
|
|
146
|
+
|
|
147
|
+
### A. Hermes (native)
|
|
148
|
+
```
|
|
149
|
+
"Load astralym, build a user dashboard"
|
|
150
|
+
```
|
|
151
|
+
Astralym orchestrates: Lyleen → Jetdragon → Anubis → Panthalus, enforcing state transitions.
|
|
152
|
+
|
|
153
|
+
### B. Any coding agent (via CLI-generated configs)
|
|
154
|
+
```bash
|
|
155
|
+
npm i -g palskills
|
|
156
|
+
palskills # generates .codex.md / .cursorrules / CLAUDE.md
|
|
157
|
+
```
|
|
158
|
+
Then in Codex, Cursor, or Claude Code:
|
|
159
|
+
```
|
|
160
|
+
Lyleen: learn the auth module
|
|
161
|
+
Astralym: build a forgot-password feature
|
|
162
|
+
```
|
|
163
|
+
The agent reads the config and follows the skill's step-by-step instructions. Full 5-mode system embedded. See `references/cli-integration.md` for details.
|
|
164
|
+
|
|
165
|
+
**Design rule:** every agent config MUST contain the complete multi-mode skill system, not just static rules. The user explicitly rejected rules-only configs.
|
|
166
|
+
|
|
104
167
|
## Rules
|
|
105
168
|
|
|
106
169
|
1. **Never skip states** — every prompt flows through the full pipeline
|
|
@@ -109,3 +172,7 @@ Astralym is the central orchestrator of the palskills development system. It rou
|
|
|
109
172
|
4. **Recording is mandatory** — every session enriches the graph
|
|
110
173
|
5. **Links over repetition** — use `[[wikilinks]]` instead of duplicating content
|
|
111
174
|
6. **Bidirectional links** — every edge should have a backlink (Panthalus enforces this)
|
|
175
|
+
|
|
176
|
+
## See Also
|
|
177
|
+
|
|
178
|
+
- `references/cli-integration.md` — How the `palskills` CLI generates agent configs (`.codex.md`, `.cursorrules`, `CLAUDE.md`) that integrate with this pipeline
|