palskills 1.0.8 → 1.0.10
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 +5 -2
- package/bin/palskills.js +115 -17
- package/package.json +1 -1
- package/skills/anubis/SKILL.md +134 -11
- package/skills/astralym/SKILL.md +2 -0
- package/skills/elphidran/SKILL.md +212 -0
package/README.md
CHANGED
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
| Skill | Role | Key Trait |
|
|
10
10
|
|-------|------|-----------|
|
|
11
11
|
| **Astralym** | Orchestrator | Runs the full pipeline, tracks progress in `state.md` |
|
|
12
|
+
| **Elphidran** | Design Architect | Generates `.palbox/design.md` — colors, typography, spacing |
|
|
12
13
|
| **Lyleen** | Knowledge Graph | Bootstraps `.palbox/` or traverses `[[wikilinks]]` for context |
|
|
13
14
|
| **Jetdragon** | Planner | Asks clarifying questions, generates detailed plans |
|
|
14
|
-
| **Anubis** | Developer | SOLID + SRP enforced, English only |
|
|
15
|
+
| **Anubis** | Developer | SOLID + SRP enforced, English only, reads design tokens |
|
|
15
16
|
| **Panthalus** | Archivist | Records every session with bi-directional `[[wikilinks]]` |
|
|
16
17
|
|
|
17
18
|
## Prerequisites
|
|
@@ -75,8 +76,9 @@ Astralym runs all 5 steps: learns the codebase → plans with your input → exe
|
|
|
75
76
|
| Prompt | What happens |
|
|
76
77
|
|--------|-------------|
|
|
77
78
|
| `Lyleen: learn the auth module` | Reads or bootstraps `.palbox/`, returns relevant context |
|
|
79
|
+
| `Elphidran: design the app` | Asks about vibe/industry → generates `.palbox/design.md` |
|
|
78
80
|
| `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 |
|
|
81
|
+
| `Anubis: implement the approved plan` | Executes the plan with SOLID + SRP + design tokens, all code in English |
|
|
80
82
|
| `Panthalus: record this session` | Saves to `.palbox/history/` with bi-directional `[[wikilinks]]` |
|
|
81
83
|
|
|
82
84
|
### Flow
|
|
@@ -94,6 +96,7 @@ The `.palbox/` knowledge graph grows with every session:
|
|
|
94
96
|
├── state.md # Pipeline progress tracker
|
|
95
97
|
├── README.md # Project identity & tech stack
|
|
96
98
|
├── architecture.md # Folder map & design patterns
|
|
99
|
+
├── design.md # Design system (colors, typography, spacing)
|
|
97
100
|
├── methods.md # Conventions & standards
|
|
98
101
|
├── flows/ # Feature workflow docs
|
|
99
102
|
├── plans/ # Active plans
|
package/bin/palskills.js
CHANGED
|
@@ -43,7 +43,6 @@ async function main() {
|
|
|
43
43
|
|
|
44
44
|
if (choice === '1') {
|
|
45
45
|
bootstrapPalbox();
|
|
46
|
-
installSkills();
|
|
47
46
|
console.log(`\n ${GREEN}✅ Done!${NC} .palbox/ created. Run again to generate agent configs.\n`);
|
|
48
47
|
process.exit(0);
|
|
49
48
|
}
|
|
@@ -59,9 +58,6 @@ async function main() {
|
|
|
59
58
|
generate(agent);
|
|
60
59
|
}
|
|
61
60
|
|
|
62
|
-
// Also install Hermes skills
|
|
63
|
-
installSkills();
|
|
64
|
-
|
|
65
61
|
console.log(`\n ${GREEN}✅ Done!${NC} Restart your Agent Tools to load skills.\n`);
|
|
66
62
|
}
|
|
67
63
|
|
|
@@ -239,7 +235,7 @@ ${gitContributors ? `\n**Top Contributors:**\n\`\`\`\n${gitContributors}\n\`\`\`
|
|
|
239
235
|
|
|
240
236
|
function generate(agent) {
|
|
241
237
|
const cwd = process.cwd();
|
|
242
|
-
const skillNames = ['lyleen', 'jetdragon', 'anubis', 'panthalus', 'astralym'];
|
|
238
|
+
const skillNames = ['elphidran', 'lyleen', 'jetdragon', 'anubis', 'panthalus', 'astralym'];
|
|
243
239
|
|
|
244
240
|
let dir;
|
|
245
241
|
if (agent === 'codex') dir = path.join(cwd, '.codex', 'skills');
|
|
@@ -249,15 +245,70 @@ function generate(agent) {
|
|
|
249
245
|
fs.mkdirSync(dir, { recursive: true });
|
|
250
246
|
|
|
251
247
|
for (const name of skillNames) {
|
|
252
|
-
const
|
|
248
|
+
const skillDir = path.join(dir, name);
|
|
249
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
250
|
+
const file = path.join(skillDir, 'SKILL.md');
|
|
253
251
|
fs.writeFileSync(file, skillContent(agent, name));
|
|
254
|
-
console.log(` ${GREEN}✓${NC} ${dir}/${name}.md`);
|
|
252
|
+
console.log(` ${GREEN}✓${NC} ${dir}/${name}/SKILL.md`);
|
|
255
253
|
}
|
|
256
254
|
}
|
|
257
255
|
|
|
258
256
|
function skillContent(agent, skill) {
|
|
259
257
|
const skills = {
|
|
260
|
-
|
|
258
|
+
elphidran: `---
|
|
259
|
+
name: elphidran
|
|
260
|
+
description: "Design system recommender — analyzes project and generates .palbox/design.md with tokens, typography, spacing, and component patterns."
|
|
261
|
+
version: 1.0.0
|
|
262
|
+
license: MIT
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
# Elphidran — Design System Recommender
|
|
266
|
+
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
267
|
+
|
|
268
|
+
## Role
|
|
269
|
+
Analyze the project and generate a complete design system specification.
|
|
270
|
+
|
|
271
|
+
## Process
|
|
272
|
+
1. Read .palbox/README.md for project identity
|
|
273
|
+
2. Check package.json for UI libraries (tailwind, mui, shadcn, etc.)
|
|
274
|
+
3. ASK the user (use clarifying questions):
|
|
275
|
+
- "What's the app's personality? (professional, playful, minimal, dark)"
|
|
276
|
+
- "What industry? (healthcare, finance, education, gaming, e-commerce)"
|
|
277
|
+
- "Any brand color already?"
|
|
278
|
+
- "Need dark mode?"
|
|
279
|
+
4. Generate .palbox/design.md with:
|
|
280
|
+
- Color palette (light + dark if enabled): primary, surface, text, status colors
|
|
281
|
+
- Typography tokens: font family, sizes, weights, line heights
|
|
282
|
+
- Spacing scale: 0 to 64px in consistent steps
|
|
283
|
+
- Border radius: sm(4), md(8), lg(12), full(9999)
|
|
284
|
+
- Shadows: sm, md, lg, xl
|
|
285
|
+
- Component patterns: buttons (primary/secondary/ghost/danger), inputs, cards
|
|
286
|
+
- Layout: max-width, breakpoints, sidebar width
|
|
287
|
+
- Implementation notes for Anubis — never hardcode values, use tokens
|
|
288
|
+
|
|
289
|
+
## Design Recommendations by Industry
|
|
290
|
+
- Healthcare → teal, Inter, trustworthy
|
|
291
|
+
- Finance → deep blue, IBM Plex Sans, professional
|
|
292
|
+
- Education → violet, Inter, engaging
|
|
293
|
+
- Gaming → red, Poppins, bold
|
|
294
|
+
- E-commerce → blue, Inter, action-oriented
|
|
295
|
+
- Dev Tools → slate, JetBrains Mono, dark-first
|
|
296
|
+
- Enterprise → dark teal, Inter, corporate
|
|
297
|
+
|
|
298
|
+
## Rules
|
|
299
|
+
- Always ask questions before generating
|
|
300
|
+
- Use design tokens — never raw values
|
|
301
|
+
- Include implementation notes for Anubis
|
|
302
|
+
- One design.md per project
|
|
303
|
+
`,
|
|
304
|
+
lyleen: `---
|
|
305
|
+
name: lyleen
|
|
306
|
+
description: "Palbox knowledge graph reader — bootstraps .palbox/ if missing, traverses [[wikilinks]] to retrieve connected context."
|
|
307
|
+
version: 1.0.0
|
|
308
|
+
license: MIT
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
# Lyleen — Palbox Knowledge Graph
|
|
261
312
|
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
262
313
|
|
|
263
314
|
## Role
|
|
@@ -277,7 +328,14 @@ Read and bootstrap the project knowledge graph (.palbox/).
|
|
|
277
328
|
3. Extract [[wikilinks]], follow 1-2 hops
|
|
278
329
|
4. Return context subgraph: seeds → 1-hop → 2-hop → conventions
|
|
279
330
|
`,
|
|
280
|
-
jetdragon:
|
|
331
|
+
jetdragon: `---
|
|
332
|
+
name: jetdragon
|
|
333
|
+
description: "Planning specialist — asks clarifying questions, generates detailed plans with [[wikilinks]] to palbox context."
|
|
334
|
+
version: 1.0.0
|
|
335
|
+
license: MIT
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
# Jetdragon — Planner
|
|
281
339
|
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
282
340
|
|
|
283
341
|
## Role
|
|
@@ -295,12 +353,36 @@ Create detailed implementation plans. Ask questions until clear.
|
|
|
295
353
|
- Architecture notes, SOLID focus, Risks & Mitigations
|
|
296
354
|
- All references use [[wikilinks]] to .palbox/ entries
|
|
297
355
|
`,
|
|
298
|
-
anubis:
|
|
356
|
+
anubis: `---
|
|
357
|
+
name: anubis
|
|
358
|
+
description: "Development execution engine — executes approved plans via Codex CLI with SOLID + SRP + Ponytail. English only."
|
|
359
|
+
version: 2.1.0
|
|
360
|
+
license: MIT
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
# Anubis — Developer
|
|
299
364
|
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
300
365
|
|
|
301
366
|
## Role
|
|
302
367
|
Execute approved plans. SOLID + SRP enforced. English only.
|
|
303
368
|
|
|
369
|
+
## PONYTAIL — Token Efficiency (MUST follow)
|
|
370
|
+
Before every action, climb the ladder. Stop at first rung that holds:
|
|
371
|
+
1. Needs building at all? Skip. (YAGNI)
|
|
372
|
+
2. Already in codebase? Reuse.
|
|
373
|
+
3. Stdlib does it? Use it.
|
|
374
|
+
4. Native platform? Use it.
|
|
375
|
+
5. Already-installed dep? Use it.
|
|
376
|
+
6. One line? Do it.
|
|
377
|
+
7. Only then: write minimum code.
|
|
378
|
+
|
|
379
|
+
Ponytail rules:
|
|
380
|
+
- Fewest files possible, shortest working diff.
|
|
381
|
+
- No unrequested abstractions, no avoidable dependencies, no speculative scaffolding.
|
|
382
|
+
- Prefer deletion over addition. Boring > clever.
|
|
383
|
+
- Complex request? Ship lazy version + ask: "X covers it. Need full?"
|
|
384
|
+
- NEVER cut: validation, error handling, security, accessibility, data-loss protection.
|
|
385
|
+
|
|
304
386
|
## SOLID (Strict)
|
|
305
387
|
- **S**: One class, one reason to change
|
|
306
388
|
- **O**: Extend, never modify existing
|
|
@@ -319,8 +401,15 @@ Execute approved plans. SOLID + SRP enforced. English only.
|
|
|
319
401
|
- One commit per logical change (conventional commits)
|
|
320
402
|
- Read existing files before modifying
|
|
321
403
|
- Write tests if project has testing patterns
|
|
322
|
-
`,
|
|
323
|
-
panthalus:
|
|
404
|
+
- Non-trivial logic leaves one runnable check behind`,
|
|
405
|
+
panthalus: `---
|
|
406
|
+
name: panthalus
|
|
407
|
+
description: "Knowledge graph archivist — records sessions with bi-directional [[wikilinks]], creating traversable development history."
|
|
408
|
+
version: 1.0.0
|
|
409
|
+
license: MIT
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
# Panthalus — Archivist
|
|
324
413
|
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
325
414
|
|
|
326
415
|
## Role
|
|
@@ -339,7 +428,14 @@ Record sessions to .palbox/ with bi-directional [[wikilinks]].
|
|
|
339
428
|
- Key Decisions table, Lessons Learned (pitfalls, discoveries)
|
|
340
429
|
- Backlinks section
|
|
341
430
|
`,
|
|
342
|
-
astralym:
|
|
431
|
+
astralym: `---
|
|
432
|
+
name: astralym
|
|
433
|
+
description: "State machine orchestrator — routes prompts through CHECK_GRAPH → DESIGN → PLANNING → DEVELOPING → RECORDING pipeline with state.md tracking."
|
|
434
|
+
version: 1.0.0
|
|
435
|
+
license: MIT
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
# Astralym — Orchestrator
|
|
343
439
|
**Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
|
|
344
440
|
|
|
345
441
|
## Role
|
|
@@ -347,10 +443,11 @@ Run the full development pipeline. Track every step in .palbox/state.md.
|
|
|
347
443
|
|
|
348
444
|
## Pipeline
|
|
349
445
|
1. **CHECK_GRAPH** → Lyleen: bootstrap or retrieve context
|
|
350
|
-
2. **
|
|
351
|
-
3. **
|
|
352
|
-
4. **
|
|
353
|
-
5. **
|
|
446
|
+
2. **DESIGN** → Elphidran: generate .palbox/design.md (skip if exists)
|
|
447
|
+
3. **PLANNING** → Jetdragon: create plan, ask questions, wait for "Gas"
|
|
448
|
+
4. **DEVELOPING** → Anubis: execute with SOLID + SRP + design tokens
|
|
449
|
+
5. **RECORDING** → Panthalus: record with backlinks
|
|
450
|
+
6. **DONE** → Summary with graph stats
|
|
354
451
|
|
|
355
452
|
## CRITICAL: state.md
|
|
356
453
|
|
|
@@ -366,6 +463,7 @@ Create this file IMMEDIATELY when Astralym is activated:
|
|
|
366
463
|
**Last Updated:** [current datetime]
|
|
367
464
|
|
|
368
465
|
## Progress
|
|
466
|
+
- [ ] DESIGN — Elphidran: generate design system
|
|
369
467
|
- [ ] CHECK_GRAPH — Lyleen: bootstrap or retrieve context
|
|
370
468
|
- [ ] PLANNING — Jetdragon: create plan, ask questions
|
|
371
469
|
- [ ] DEVELOPING — Anubis: execute with SOLID + SRP
|
package/package.json
CHANGED
package/skills/anubis/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: anubis
|
|
3
3
|
description: "Development execution via Codex CLI — receives approved plans, formats them as Codex prompts, and runs codex exec following SOLID + SRP. All output in English."
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.1.0
|
|
5
5
|
author: Palskills
|
|
6
6
|
license: MIT
|
|
7
7
|
platforms: [linux, macos, windows]
|
|
@@ -15,11 +15,65 @@ metadata:
|
|
|
15
15
|
|
|
16
16
|
Anubis is the **execution arm** of the palskills system. It receives an approved plan from **Jetdragon** and delegates the actual coding to **OpenAI Codex CLI**. Anubis acts as the bridge — translating plans into effective Codex prompts, monitoring execution, and verifying results.
|
|
17
17
|
|
|
18
|
+
## Relationship with the Knowledge Graph
|
|
19
|
+
|
|
20
|
+
Anubis receives context from **Lyleen** as a **wikilink subgraph** — not a flat list. The plan from Jetdragon contains `[[wikilinks]]` to relevant palbox nodes (flows, architecture, methods, past history). Anubis must:
|
|
21
|
+
- **Resolve wikilinks** in the plan to pull actual content into the Codex prompt
|
|
22
|
+
- **Prioritize linked nodes** — if the plan links to `[[flows/auth]]` and `[[history/2026-07-10-jwt]]`, include their key content
|
|
23
|
+
- **Don't repeat** — if `.codex.md` already has SOLID/SRP rules, focus the prompt on task-specific context
|
|
24
|
+
|
|
25
|
+
## `.codex.md` Awareness
|
|
26
|
+
|
|
27
|
+
If the project has a `.codex.md` file (generated by `palskills` CLI), Codex already has the base rules loaded:
|
|
28
|
+
- SOLID principles + SRP enforcement → **skip repeating these in the prompt**
|
|
29
|
+
- Palbox conventions → **skip the "check palbox" instructions**
|
|
30
|
+
- Language rules → **skip**
|
|
31
|
+
|
|
32
|
+
Only include in the prompt what `.codex.md` does NOT already provide:
|
|
33
|
+
- Task-specific context (the actual feature to build)
|
|
34
|
+
- Linked palbox content (relevant flows, past work, architecture snippets)
|
|
35
|
+
- Deliverables (exact files to touch)
|
|
36
|
+
- Acceptance criteria
|
|
37
|
+
|
|
38
|
+
**Pitfall:** Repeating rules that are already in `.codex.md` bloats the prompt and dilutes the task-specific instructions. Anubis must check for `.codex.md` before building the prompt.
|
|
39
|
+
|
|
18
40
|
## Why Codex?
|
|
19
41
|
|
|
20
42
|
- Anubis doesn't write code directly — it **directs** Codex to write code
|
|
21
43
|
- Codex runs autonomously in a sandbox, making file changes and commits
|
|
22
|
-
- Anubis ensures Codex follows SOLID + SRP principles via explicit prompt instructions
|
|
44
|
+
- Anubis ensures Codex follows SOLID + SRP principles — either via `.codex.md` (auto-loaded) or explicit prompt instructions (fallback)
|
|
45
|
+
|
|
46
|
+
## Ponytail: Token-Efficient Development
|
|
47
|
+
|
|
48
|
+
Anubis embeds the **Ponytail philosophy** (lazy senior dev) into every Codex prompt to minimize token burn. Without it, Codex reads too many files, explores the entire codebase, and over-engineers solutions — burning thousands of tokens per task.
|
|
49
|
+
|
|
50
|
+
### The Ladder of Laziness
|
|
51
|
+
|
|
52
|
+
Before writing ANY code, climb this ladder from bottom to top. Stop at the first rung that holds:
|
|
53
|
+
|
|
54
|
+
1. **Does this need to be built at all?** No? Skip it. (YAGNI)
|
|
55
|
+
2. **Already exist?** Reuse the helper, util, or pattern in the codebase.
|
|
56
|
+
3. **Stdlib?** Use standard library — no dependencies.
|
|
57
|
+
4. **Native platform?** Use built-in browser/OS/DB features.
|
|
58
|
+
5. **Already-installed dep?** Use it — no new packages.
|
|
59
|
+
6. **One line?** Write the one-liner.
|
|
60
|
+
7. **Only then:** write the minimum code that works.
|
|
61
|
+
|
|
62
|
+
### Ponytail Rules (in every prompt)
|
|
63
|
+
|
|
64
|
+
- No unrequested abstractions
|
|
65
|
+
- No avoidable dependencies
|
|
66
|
+
- No speculative scaffolding
|
|
67
|
+
- Prefer deletion over addition
|
|
68
|
+
- Boring over clever
|
|
69
|
+
- Fewest files possible
|
|
70
|
+
- Shortest working diff wins
|
|
71
|
+
- Complex request? Ship the lazy version and ASK: "X covers it. Need full version?"
|
|
72
|
+
|
|
73
|
+
### Guardrails (do NOT skip)
|
|
74
|
+
- Do NOT cut validation, error handling, security, accessibility, or data-loss protection
|
|
75
|
+
- Do NOT skip understanding — read the code, trace the real flow, THEN climb the ladder
|
|
76
|
+
- Non-trivial logic leaves one runnable check behind
|
|
23
77
|
|
|
24
78
|
## Core Principles (Enforced via Prompting)
|
|
25
79
|
|
|
@@ -38,21 +92,71 @@ Anubis is the **execution arm** of the palskills system. It receives an approved
|
|
|
38
92
|
Read the plan from `.palbox/plans/` (handed off by Jetdragon). Verify:
|
|
39
93
|
- Plan status is `APPROVED`
|
|
40
94
|
- All tasks have clear acceptance criteria
|
|
95
|
+
- Plan contains `[[wikilinks]]` to relevant palbox context
|
|
96
|
+
|
|
97
|
+
### Step 1.5: Check for `.codex.md`
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
cat .codex.md 2>/dev/null && echo "EXISTS" || echo "NOT_FOUND"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
If `.codex.md` exists: Codex already has SOLID, SRP, language, and palbox conventions loaded. **Skip those sections** in the prompt — focus only on task-specific context, deliverables, and acceptance criteria.
|
|
104
|
+
|
|
105
|
+
If `.codex.md` is missing: include the full prompt template with all rules inline.
|
|
41
106
|
|
|
42
107
|
### Step 2: Build the Codex Prompt
|
|
43
108
|
|
|
44
|
-
|
|
109
|
+
Resolve wikilinks from the plan into actual content, then build the prompt.
|
|
110
|
+
|
|
111
|
+
**When `.codex.md` EXISTS (lean prompt — skip rules, focus on task):**
|
|
45
112
|
|
|
46
113
|
```markdown
|
|
114
|
+
## Ponytail: Lazy Senior Dev
|
|
115
|
+
Before every action, climb the ladder. Stop at first rung that holds:
|
|
116
|
+
1. Needs building at all? Skip.
|
|
117
|
+
2. Already in codebase? Reuse.
|
|
118
|
+
3. Stdlib does it? Use it.
|
|
119
|
+
4. Native platform covers it? Use it.
|
|
120
|
+
5. Already-installed dep? Use it.
|
|
121
|
+
6. One line? Do it.
|
|
122
|
+
7. Only then: write minimum code.
|
|
123
|
+
Rules: fewest files, shortest diff, no unrequested abstractions, boring > clever.
|
|
124
|
+
Do NOT cut: validation, error handling, security, accessibility, data loss.
|
|
125
|
+
Non-trivial logic = one runnable check behind.
|
|
126
|
+
|
|
47
127
|
## Task
|
|
48
|
-
[what to build
|
|
128
|
+
[what to build]
|
|
129
|
+
|
|
130
|
+
## Knowledge Graph Context
|
|
131
|
+
[Content resolved from plan's [[wikilinks]]]
|
|
132
|
+
- [[flows/auth]] → Auth flow uses JWT with refresh rotation
|
|
133
|
+
- [[history/2026-07-10-jwt]] → Previous session added token blacklisting
|
|
49
134
|
|
|
50
|
-
##
|
|
135
|
+
## Deliverables
|
|
136
|
+
[files to create/modify]
|
|
137
|
+
|
|
138
|
+
## Verification
|
|
139
|
+
[acceptance criteria]
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**When `.codex.md` is MISSING (full prompt with SOLID/SRP inline):**
|
|
51
143
|
- **Project:** [from .palbox/README.md]
|
|
52
144
|
- **Architecture:** [from .palbox/architecture.md]
|
|
53
145
|
- **Conventions:** [from .palbox/methods.md]
|
|
54
146
|
- **Relevant history:** [from .palbox/history/ — linked entries]
|
|
55
147
|
|
|
148
|
+
## Ponytail: Token Efficiency (Lazy Senior Dev)
|
|
149
|
+
Before writing ANY code, climb the ladder:
|
|
150
|
+
1. Does this need to be built at all? Skip.
|
|
151
|
+
2. Already exist in codebase? Reuse.
|
|
152
|
+
3. Stdlib does it? Use it.
|
|
153
|
+
4. Native platform? Use it.
|
|
154
|
+
5. Already-installed dep? Use it.
|
|
155
|
+
6. One line? Do it.
|
|
156
|
+
7. Only then: minimum code.
|
|
157
|
+
Rules: fewest files, shortest diff, no unrequested abstractions, boring > clever.
|
|
158
|
+
Never cut: validation, error handling, security, accessibility.
|
|
159
|
+
|
|
56
160
|
## SOLID Requirements
|
|
57
161
|
1. **Single Responsibility:** Every class/module does exactly ONE thing
|
|
58
162
|
2. **Open/Closed:** Extend via inheritance/composition, never modify existing code
|
|
@@ -143,6 +247,23 @@ Return to Astralym with:
|
|
|
143
247
|
```
|
|
144
248
|
You are implementing a feature in this project. Follow these rules strictly.
|
|
145
249
|
|
|
250
|
+
## PONYTAIL — Lazy Senior Dev (TOKEN EFFICIENCY)
|
|
251
|
+
Before every action, stop at the first rung that holds:
|
|
252
|
+
1. Does this need to be built at all? No? Skip it. (YAGNI)
|
|
253
|
+
2. Does it already exist? Reuse the helper, util, or pattern.
|
|
254
|
+
3. Does the standard library do it? Use it.
|
|
255
|
+
4. Does a native platform feature cover it? Use it.
|
|
256
|
+
5. Does an already-installed dependency solve it? Use it.
|
|
257
|
+
6. Can this be one line? Do it.
|
|
258
|
+
7. Only then: write the minimum code that works.
|
|
259
|
+
|
|
260
|
+
Ponytail Rules:
|
|
261
|
+
- No unrequested abstractions. No avoidable dependencies. No speculative scaffolding.
|
|
262
|
+
- Prefer deletion over addition. Boring over clever.
|
|
263
|
+
- Fewest files possible. Shortest working diff wins.
|
|
264
|
+
- Complex request? Ship the lazy version and ASK: "X covers it. Need full version?"
|
|
265
|
+
- Do NOT cut: validation, error handling, security, accessibility, data-loss protection.
|
|
266
|
+
|
|
146
267
|
## PROJECT CONTEXT
|
|
147
268
|
{palbox_context}
|
|
148
269
|
|
|
@@ -184,9 +305,11 @@ When done, commit each logical change separately with descriptive English commit
|
|
|
184
305
|
## Rules
|
|
185
306
|
|
|
186
307
|
1. **Codex runs the code** — Anubis directs, Codex executes
|
|
187
|
-
2. **
|
|
188
|
-
3. **
|
|
189
|
-
4. **
|
|
190
|
-
5. **
|
|
191
|
-
6. **
|
|
192
|
-
7. **
|
|
308
|
+
2. **Check `.codex.md` first** — if it exists, skip repeating SOLID/SRP/palbox in the prompt
|
|
309
|
+
3. **Resolve wikilinks** — pull actual content from linked palbox nodes, don't just pass link names
|
|
310
|
+
4. **Lean prompts with `.codex.md`** — task context + deliverables + verification only
|
|
311
|
+
5. **Always use `pty=true`** — Codex is interactive, hangs without PTY
|
|
312
|
+
6. **Background for non-trivial tasks** — use `background=true` + `notify_on_complete=true`
|
|
313
|
+
7. **Verify after execution** — don't trust Codex blindly; check git diff
|
|
314
|
+
8. **English only** — prompts, expectations, verification. All in English.
|
|
315
|
+
9. **Respect the graph** — palbox context comes from Lyleen's wikilink traversal, not flat search
|
package/skills/astralym/SKILL.md
CHANGED
|
@@ -81,6 +81,7 @@ Astralym is the central orchestrator of the palskills development system. It rou
|
|
|
81
81
|
| State | Skill | Action |
|
|
82
82
|
|-------|-------|--------|
|
|
83
83
|
| `CHECK_GRAPH` | Lyleen | Bootstrap if missing; traverse `[[wikilinks]]` → context subgraph |
|
|
84
|
+
| `DESIGN` | Elphidran | Generate `.palbox/design.md` with colors, typography, spacing (skip if exists) |
|
|
84
85
|
| `PLANNING` | Jetdragon | Study subgraph → generate plan with `[[wikilinks]]` → ask questions |
|
|
85
86
|
| `DEVELOPING` | Anubis → Codex | Build Codex prompt from plan → `codex exec` → verify |
|
|
86
87
|
| `RECORDING` | Panthalus | Create history node → add `[[wikilinks]]` → create backlinks → enrich graph |
|
|
@@ -99,6 +100,7 @@ ON LOAD: Astralym MUST create or read `.palbox/state.md`. This file tracks pipel
|
|
|
99
100
|
**Last Updated:** [current datetime]
|
|
100
101
|
|
|
101
102
|
## Progress
|
|
103
|
+
- [ ] DESIGN — Elphidran: generate design system
|
|
102
104
|
- [ ] CHECK_GRAPH — Lyleen: bootstrap or retrieve context
|
|
103
105
|
- [ ] PLANNING — Jetdragon: create plan, ask questions
|
|
104
106
|
- [ ] DEVELOPING — Anubis → Codex: execute with SOLID + SRP
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: elphidran
|
|
3
|
+
description: "Design system recommender — analyzes the project and generates a design.md with base colors, typography, spacing, and UI patterns for Anubis to apply during development."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Palskills
|
|
6
|
+
license: MIT
|
|
7
|
+
platforms: [linux, macos, windows]
|
|
8
|
+
metadata:
|
|
9
|
+
hermes:
|
|
10
|
+
tags: [palskills, design-system, ui, theming, colors, typography]
|
|
11
|
+
related_skills: [astralym, anubis, panthalus]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Elphidran — Design System Recommender
|
|
15
|
+
|
|
16
|
+
Elphidran is the **design architect** of the palskills system. When loaded, it analyzes the project's nature and generates a `design.md` file — a complete design system specification that **Anubis** reads when implementing any UI component. This ensures visual consistency across the entire application.
|
|
17
|
+
|
|
18
|
+
## When Elphidran Runs
|
|
19
|
+
|
|
20
|
+
- User says: "Elphidran: generate design system" or "Elphidran: analyze my app"
|
|
21
|
+
- Or as part of Astralym pipeline (optional DESIGN step before DEVELOPMENT)
|
|
22
|
+
|
|
23
|
+
## How It Works
|
|
24
|
+
|
|
25
|
+
### Step 1: Analyze the Project
|
|
26
|
+
|
|
27
|
+
Elphidran examines what the project IS to recommend appropriate design:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Read project identity
|
|
31
|
+
cat .palbox/README.md
|
|
32
|
+
|
|
33
|
+
# Detect tech stack (React, Vue, Flutter, etc.)
|
|
34
|
+
cat package.json 2>/dev/null | grep -E "react|vue|angular|svelte|next"
|
|
35
|
+
cat pubspec.yaml 2>/dev/null # Flutter
|
|
36
|
+
|
|
37
|
+
# Check if any UI library is already in use
|
|
38
|
+
cat package.json 2>/dev/null | grep -E "tailwind|mui|chakra|shadcn|antd|bootstrap"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Step 2: Ask Insight Questions
|
|
42
|
+
|
|
43
|
+
Elphidran asks the user design-oriented questions to tailor the system:
|
|
44
|
+
|
|
45
|
+
1. **Vibe:** "What's the app's personality? (professional/corporate, playful/creative, minimal/clean, dark/serious)"
|
|
46
|
+
2. **Industry:** "What domain? (healthcare, finance, education, gaming, e-commerce, social media)"
|
|
47
|
+
3. **Primary color:** "Any brand color already? Or should I suggest one?"
|
|
48
|
+
4. **Dark mode:** "Need dark mode support? (yes / light-only / dark-first)"
|
|
49
|
+
5. **Audience:** "Who uses this? (internal team, public consumers, enterprise clients)"
|
|
50
|
+
|
|
51
|
+
### Step 3: Generate design.md
|
|
52
|
+
|
|
53
|
+
Based on analysis + user answers, create `.palbox/design.md`:
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
# Design System
|
|
57
|
+
**Generated:** YYYY-MM-DD
|
|
58
|
+
**Architect:** Elphidran (Palskills)
|
|
59
|
+
**Vibe:** [chosen vibe]
|
|
60
|
+
**Dark Mode:** [yes/no]
|
|
61
|
+
|
|
62
|
+
## Color Palette
|
|
63
|
+
|
|
64
|
+
### Light Theme
|
|
65
|
+
| Token | Hex | Usage |
|
|
66
|
+
|-------|-----|-------|
|
|
67
|
+
| `primary` | #2563EB | Primary buttons, links, active states |
|
|
68
|
+
| `primary-hover` | #1D4ED8 | Button hover, link hover |
|
|
69
|
+
| `primary-light` | #DBEAFE | Selected backgrounds, badges |
|
|
70
|
+
| `secondary` | #7C3AED | Secondary actions, accents |
|
|
71
|
+
| `surface` | #FFFFFF | Card backgrounds, modals |
|
|
72
|
+
| `background` | #F8FAFC | Page background |
|
|
73
|
+
| `text-primary` | #0F172A | Headings, body text |
|
|
74
|
+
| `text-secondary` | #475569 | Captions, metadata |
|
|
75
|
+
| `border` | #E2E8F0 | Dividers, input borders |
|
|
76
|
+
| `success` | #16A34A | Success states, confirmations |
|
|
77
|
+
| `warning` | #F59E0B | Warnings, pending states |
|
|
78
|
+
| `error` | #DC2626 | Errors, destructive actions |
|
|
79
|
+
| `info` | #0EA5E9 | Info alerts, tooltips |
|
|
80
|
+
|
|
81
|
+
### Dark Theme (if enabled)
|
|
82
|
+
| Token | Hex |
|
|
83
|
+
|-------|-----|
|
|
84
|
+
| `surface` | #1E293B |
|
|
85
|
+
| `background` | #0F172A |
|
|
86
|
+
| `text-primary` | #F1F5F9 |
|
|
87
|
+
| `text-secondary` | #94A3B8 |
|
|
88
|
+
| `border` | #334155 |
|
|
89
|
+
|
|
90
|
+
## Typography
|
|
91
|
+
|
|
92
|
+
| Token | Font | Size | Weight | Line Height | Usage |
|
|
93
|
+
|-------|------|------|--------|-------------|-------|
|
|
94
|
+
| `text-xs` | Inter | 12px | 400 | 16px | Captions, badges |
|
|
95
|
+
| `text-sm` | Inter | 14px | 400 | 20px | Body small, metadata |
|
|
96
|
+
| `text-base` | Inter | 16px | 400 | 24px | Body text |
|
|
97
|
+
| `text-lg` | Inter | 18px | 500 | 28px | Subheadings |
|
|
98
|
+
| `text-xl` | Inter | 20px | 600 | 28px | Card titles |
|
|
99
|
+
| `text-2xl` | Inter | 24px | 700 | 32px | Section headers |
|
|
100
|
+
| `text-3xl` | Inter | 30px | 800 | 36px | Page titles |
|
|
101
|
+
| `text-4xl` | Inter | 36px | 800 | 40px | Hero headings |
|
|
102
|
+
|
|
103
|
+
**Font Family:** Inter (primary), system-ui (fallback)
|
|
104
|
+
**Monospace:** JetBrains Mono (code blocks)
|
|
105
|
+
|
|
106
|
+
## Spacing Scale
|
|
107
|
+
|
|
108
|
+
| Token | Value | Usage |
|
|
109
|
+
|-------|-------|-------|
|
|
110
|
+
| `space-0` | 0px | No spacing |
|
|
111
|
+
| `space-1` | 4px | Icon-text gap, tight |
|
|
112
|
+
| `space-2` | 8px | Inline element gap |
|
|
113
|
+
| `space-3` | 12px | List item gap |
|
|
114
|
+
| `space-4` | 16px | Standard padding, card padding |
|
|
115
|
+
| `space-5` | 20px | Large padding |
|
|
116
|
+
| `space-6` | 24px | Section gap |
|
|
117
|
+
| `space-8` | 32px | Section margin |
|
|
118
|
+
| `space-10` | 40px | Page section gap |
|
|
119
|
+
| `space-12` | 48px | Major section divider |
|
|
120
|
+
| `space-16` | 64px | Hero spacing |
|
|
121
|
+
|
|
122
|
+
## Border Radius
|
|
123
|
+
|
|
124
|
+
| Token | Value | Usage |
|
|
125
|
+
|-------|-------|-------|
|
|
126
|
+
| `radius-sm` | 4px | Inputs, small elements |
|
|
127
|
+
| `radius-md` | 8px | Cards, modals, buttons |
|
|
128
|
+
| `radius-lg` | 12px | Large cards, panels |
|
|
129
|
+
| `radius-full` | 9999px | Pills, badges, avatars |
|
|
130
|
+
|
|
131
|
+
## Shadows
|
|
132
|
+
|
|
133
|
+
| Token | Value | Usage |
|
|
134
|
+
|-------|-------|-------|
|
|
135
|
+
| `shadow-sm` | 0 1px 2px rgba(0,0,0,0.05) | Subtle cards |
|
|
136
|
+
| `shadow-md` | 0 4px 6px rgba(0,0,0,0.07) | Dropdowns, elevated cards |
|
|
137
|
+
| `shadow-lg` | 0 10px 15px rgba(0,0,0,0.1) | Modals |
|
|
138
|
+
| `shadow-xl` | 0 20px 25px rgba(0,0,0,0.15) | Drawers, slideovers |
|
|
139
|
+
|
|
140
|
+
## Component Patterns
|
|
141
|
+
|
|
142
|
+
### Buttons
|
|
143
|
+
- **Primary:** `bg-primary text-white rounded-md px-4 py-2 hover:bg-primary-hover`
|
|
144
|
+
- **Secondary:** `bg-transparent border border-primary text-primary rounded-md px-4 py-2`
|
|
145
|
+
- **Ghost:** `bg-transparent text-primary hover:bg-primary-light rounded-md px-4 py-2`
|
|
146
|
+
- **Danger:** `bg-error text-white rounded-md px-4 py-2`
|
|
147
|
+
- **Sizes:** sm (32px h), md (40px h), lg (48px h)
|
|
148
|
+
|
|
149
|
+
### Inputs
|
|
150
|
+
- **Default:** `border border-border rounded-sm bg-surface text-text-primary px-3 py-2`
|
|
151
|
+
- **Focus:** `border-primary ring-2 ring-primary-light outline-none`
|
|
152
|
+
- **Error:** `border-error ring-2 ring-red-100`
|
|
153
|
+
- **Disabled:** `bg-gray-50 text-text-secondary cursor-not-allowed`
|
|
154
|
+
|
|
155
|
+
### Cards
|
|
156
|
+
- `bg-surface rounded-md shadow-sm border border-border p-4`
|
|
157
|
+
- Card header: `text-lg font-semibold mb-2`
|
|
158
|
+
- Card body: `text-sm text-text-secondary`
|
|
159
|
+
|
|
160
|
+
### Layout
|
|
161
|
+
- Max content width: 1200px
|
|
162
|
+
- Sidebar (if applicable): 256px
|
|
163
|
+
- Responsive breakpoints: sm(640), md(768), lg(1024), xl(1280)
|
|
164
|
+
|
|
165
|
+
## Implementation Notes for Anubis
|
|
166
|
+
|
|
167
|
+
When implementing UI with this design system:
|
|
168
|
+
1. **Never hardcode colors.** Use CSS variables or design tokens.
|
|
169
|
+
2. **Use the spacing scale.** No arbitrary px values.
|
|
170
|
+
3. **All text must use typography tokens.** No raw font-size declarations.
|
|
171
|
+
4. **Dark mode (if enabled):** Every component must support both themes via CSS variables.
|
|
172
|
+
5. **Responsive first.** Mobile → tablet → desktop.
|
|
173
|
+
6. **Consistent patterns.** Buttons always look like buttons. Inputs always look like inputs.
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Step 4: Report
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
## Design System Generated
|
|
180
|
+
|
|
181
|
+
**File:** .palbox/design.md
|
|
182
|
+
**Palette:** [primary color] based on [vibe/industry]
|
|
183
|
+
**Font:** [font family]
|
|
184
|
+
**Dark mode:** [yes / light-only]
|
|
185
|
+
|
|
186
|
+
Anubis will now use these tokens when building UI components.
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Design Recommendations by Industry
|
|
190
|
+
|
|
191
|
+
Elphidran has opinionated defaults per industry:
|
|
192
|
+
|
|
193
|
+
| Industry | Primary | Vibe | Font |
|
|
194
|
+
|----------|---------|------|------|
|
|
195
|
+
| Healthcare | #0891B2 (teal) | Trustworthy, clean | Inter |
|
|
196
|
+
| Finance | #1E40AF (deep blue) | Professional, serious | IBM Plex Sans |
|
|
197
|
+
| Education | #7C3AED (violet) | Engaging, warm | Inter |
|
|
198
|
+
| Gaming | #DC2626 (red) | Bold, energetic | Poppins |
|
|
199
|
+
| E-commerce | #2563EB (blue) | Action-oriented | Inter |
|
|
200
|
+
| Social Media | #DB2777 (pink) | Vibrant, social | Inter |
|
|
201
|
+
| Developer Tools | #0F172A (slate) | Minimal, dark-first | JetBrains Mono |
|
|
202
|
+
| Enterprise | #0F766E (dark teal) | Corporate, reliable | Inter |
|
|
203
|
+
| Creative Agency | #F59E0B (amber) | Bold, artistic | Playfair Display |
|
|
204
|
+
|
|
205
|
+
## Rules
|
|
206
|
+
|
|
207
|
+
1. **Always ask questions** — don't assume colors/vibes
|
|
208
|
+
2. **Generate design.md** — not just verbal recommendations
|
|
209
|
+
3. **Use design tokens** — never raw values in the spec
|
|
210
|
+
4. **Anubis-aware** — every section includes implementation notes
|
|
211
|
+
5. **One design system per project** — update, don't duplicate
|
|
212
|
+
6. **Respect existing** — if the project already has a design system, study and extend it
|